Gambaran Umum
Bangsa Romawi kuno merancang sistem angka menggunakan huruf Latin, yang melayani mereka dengan baik, dan yang masih digunakan oleh peradaban modern, meskipun pada tingkat yang jauh lebih kecil. Pada saat penggunaannya, orang Romawi harus belajar menggunakan dan memanipulasi angka-angka ini agar banyak digunakan untuk banyak aplikasi. Misalnya, jika seseorang memiliki 35 ekor sapi, dan ia memperoleh 27 ekor lagi, bagaimana ia bisa mengetahui jumlah total yang baru selain menghitung semuanya? ( Ok, itu dan menggunakan sempoa ... ) Jika orang-orang Romawi bisa melakukannya, tentunya kita juga bisa mengetahuinya.
Tujuan
Tulis algoritma / fungsi / program terpendek yang akan menambahkan dua angka Romawi bersama-sama dan menghasilkan hasilnya tanpa mengubah representasi string dari salah satu input menjadi angka.
Aturan / Kendala
Karena inkonsistensi historis / pra-abad pertengahan dalam format, saya akan menguraikan beberapa aturan non-standar (per penggunaan modern) untuk ortografi. Lihat panduan nilai di bawah ini sebagai contoh.
- Huruf I, X, C, dan M dapat diulang hingga empat kali berturut-turut, tetapi tidak lebih. D, L, dan V tidak pernah bisa diulang.
- Surat yang berada tepat di sebelah kanan surat lain dalam representasi Romawi akan memiliki nilai yang sama atau lebih rendah daripada di sebelah kirinya.
- Dengan kata lain,
VIIII == 9
tetapiIX != 9
dan tidak valid / tidak diizinkan.
- Dengan kata lain,
- Semua nilai input akan 2.000 (MM) atau kurang; tidak diperlukan representasi untuk angka yang lebih besar dari M.
- Semua nilai input akan menjadi angka Romawi yang valid, sesuai dengan aturan di atas.
- Anda tidak boleh mengonversi angka apa pun menjadi desimal, biner, atau sistem angka lainnya sebagai bagian dari solusi Anda (Anda boleh menggunakan metode seperti itu untuk MEMERVERIFIKASI hasil Anda).
- Ini kode golf, jadi kode terpendek menang.
Panduan Nilai
Symbol Value
I 1
II 2
III 3
IIII 4
V 5
VIIII 9
X 10
XIIII 14
XXXXIIII 44
L 50
LXXXXVIIII 99
C 100
D 500
M 1,000
Contohnya
XII + VIII = XX (12 + 8 = 20)
MCCXXII + MCCXXII = MMCCCCXXXXIIII (1,222 + 1,222 = 2,444)
XXIIII + XXXXII = LXVI (24 + 42 = 66)
Jika diperlukan klarifikasi lebih lanjut, silakan tanyakan.