Ini adalah tahun MDLXVII di dunia di mana Kekaisaran Romawi tidak pernah jatuh, dan keruntuhan ke zaman kegelapan tidak pernah terjadi. Karena periode Pax Romana yang diperpanjang, stabilitas ekonomi kekaisaran memungkinkan teknologi untuk maju dengan kecepatan tinggi.
Orang-orang Romawi mulai mencoba-coba dengan sirkuit, dan telah menemukan kalkulator cerdas yang tidak memerlukan penggunaan tombol "sama dengan". Mereka menyebutnya "Notasi Romawi Polandia"
Untuk membuat perhitungan, mereka memasukkan operan mereka terlebih dahulu, kemudian operasi.
Misalnya, 100 + 11 * 20 akan menjadi C XI XX * +
.
Selain itu
Bangsa Romawi telah menemukan bahwa mereka sering perlu membuat banyak perhitungan pada waktu yang bersamaan, dan akan lebih memilih metode untuk mengembalikan setiap nilai "pada tumpukan" dalam semacam susunan / daftar / struktur seperti tuple. (mis. X I + X I - CC II +
akan kembali [11, 9, 202])
Tantangannya adalah mengembangkan program kalkulator yang mampu membuat perhitungan ini.
Klarifikasi : Notasi Subtraktif diperlukan. Saya tidak menyadari itu tidak dikenal fitur di kekaisaran Romawi Kuno. Karena itu tugasnya ambigu, dan saya minta maaf.
Pedoman Minimum
- Output Anda akan dalam Angka Arab.
- Anda hanya perlu mengonversi dari Angka Romawi hingga 5000.
- Anda perlu mendukung operasi +, -, /, * (penambahan, pengurangan, pembagian, dan penggandaan).
- Apakah divisi berbasis floating point atau integer didasarkan pada implementasi spesifik. Baik berhasil untuk tantangan ini.
- Output Anda perlu mendukung angka hingga 4 Miliar.
- Jawaban terpendek secara keseluruhan, DAN dalam setiap bahasa menang. Ini adalah Tantangan Golf Code tapi saya suka varietasnya.
Dalam hal terjadi seri, faktor-faktor seperti dukungan untuk angka romawi di atas 5000 atau operasi tambahan akan dianggap pengajuan paling awal akan menang.
Jawaban:
Python 2 + roman , 118 byte
Demo
Itu tidak dapat diuji secara online karena modul yang digunakannya, tetapi Anda dapat melihat bagaimana menjalankan ini di sini (program lengkap menerima input dari STDIN - ekspresi dengan tanda kutip - dan mencetak output ke STDOUT - dalam bentuk daftar , tumpukan). Menggunakan versi yang sedikit lebih lama, karena saya tidak akan repot-repot membuat GIF baru hanya dengan beberapa byte:
Untuk menginstal paket, Anda dapat menjalankan yang berikut ini di Terminal / Command Line:
sumber
pyTester/Py.py
ಠ_ಠHaskell , 217 byte
-13 byte terima kasih kepada Bruce Forte. -73 byte berkat Ørjan Johansen.
Cobalah online!
Implementasi manual, yay!
sumber
l=1:4:5:9:map(10*)l
.SOGL V0.12 , 57 byte
Coba Di Sini!
sumber
JavaScript (Node) + romans + stk-lang , 74 byte
Mengembalikan daftar bigintegers.
Eksekusi
Jalankan yang berikut ini:
Kemudian tempel fungsinya. Contoh:
sumber
$
dan>
. Jujur, saya suka ituDyalog APL , 93 byte
Cobalah online!
116 byte tanpa built-in roman
sumber
var fn←arr
- setara denganvar ← var fn arr
. Ini digunakan di banyak tempat,a,←⍵
menjadi salah satu yang ditambahkan⍵
ke variabela
Python 3 ,
280206 byteCobalah online!
Kali ini dengan dukungan notasi yang kurang. metode
c
adalah titik masuk utama; yang lainnya adalah dukungan.Edit log:
sumber
if
danelse
.n+=v-n%v*2
str
kegunaan. Cobalah online!JavaScipt (ES6),
152151 byteDisimpan 1 byte berkat pengguna202729
Uji kasus
Tampilkan cuplikan kode
Penjelasan (kurang golf)
sumber
1e3
juga berfungsi dan menyimpan beberapa byte.Jelly , 82 byte
Cobalah online!
Awalnya diposting di obrolan .
Penjelasan:
Karena Jelly tidak memiliki tumpukan, saya memasukkan tumpukan itu ke dalam register.
Ketika program dimulai, nilai register
®
adalah0
, yang diperlakukan sebagai[0]
untuk keperluan program ini.sumber
Python 3 ,
216187 byteCobalah online!
Karena muncul di komentar baik pertanyaan dan jawaban ini dan kemungkinan menyebabkan suara turun: pengajuan ini tidak mendukung notasi subtraktif.Dasar Pemikiran: Notasi subtraktif jarang digunakan di Kekaisaran Romawi dan hanya dipopulerkan kemudian (lihat Subtractive Notation , paragraf 3, kalimat terakhir). Tugas ini menganggap Kekaisaran Romawi yang mengembangkan sirkuit terpadu yang dapat diprogram, bukan yang mengalami perubahan budaya yang sama seperti Eropa abad ke-13. Deskripsi tidak menyebutkan notasi subtraktif dan tidak ada contoh yang menggunakannya.
sumber
CIV
(104).