Tulis algoritma untuk menafsirkan urutan huruf sebagai angka Romawi. (lihat aturan angka romawi di bawah)
Setiap huruf berbeda memiliki nilai desimal Arab yang cocok, tidak maksimal. Tetapi Anda tidak memiliki kunci sebelumnya, jadi {A=10, I=1, X=5, ... Z=1000000}putuskan dengan interpretasi Anda.
Tantangan
- Baca input melalui
STDINatau setara dan tulis output melaluiSTDOUTatau setara - Input yang valid adalah kombinasi huruf besar dan kecil yaitu pencocokan
\[a-zA-Z]+\ - Masukan harus divalidasi untuk melihat apakah urutan huruf dapat diartikan sebagai angka Romawi yang valid
- Jika input melewati validasi, output yang valid harus menjadi interpretasi desimal Arab terendah dan kunci yang digunakan yaitu
Aaditafsirkan sebagai4 {a=5, A=1}tidak6 {A=5, a=1}atau9 {a=10, a=1}
Aturan Angka Romawi
Hanya huruf yang mewakili kekuatan sepuluh yang dapat diulang, maksimal tiga kali berturut-turut dan total empat kali misalnya
IIIIIXXXIXJika satu atau lebih huruf ditempatkan setelah huruf lain yang nilainya lebih besar, tambahkan jumlah itu
AAaa => 22 {A=10, a=1} (20 + 2 = 22) bbAAaa => 222 {b=100, A=10, a=1} (200 + 20 + 2 = 222)Jika suatu huruf diletakkan di depan huruf lain yang nilainya lebih besar, kurangi jumlah itu
Aa => 4 {a=5, A=1} (5 – 1 = 4) AaA => 19 {A=10, a=1} (10 + 10 – 1 = 19) BbBaA => 194 {B=100, b=10, A=5, a=1} (100 + 100 - 10 + 5 - 1 = 194)Beberapa aturan berlaku untuk mengurangi jumlah dari angka Romawi:
- Hanya kurangi sepuluh kekuatan yaitu
1, 10, 100...tidak5, 50, 500... - Tidak ada pengurangan ganda
18yang ditulis sebagaiXVIIItidakIIXX (10 + 10 - 1 - 1) - Jangan kurangi angka dari yang lebih dari sepuluh kali lebih besar.
Anda dapat mengurangi1dari5atau10tetapi tidak dari50, 100, 500...
- Hanya kurangi sepuluh kekuatan yaitu
Contoh
Input:
Aa
BAa
CCCXLVII
MMMCDVII
ABADDF
XVVX
FAASGSH
DXCCDA
AaBbcDEf
Output:
4 {a=5, A=1}
14 {B=10, a=5, A=1}
347 {C=100, L=50, X=10, V=5, I=1}
347 {M=100, D=50, C=10, V=5, I=1}
1921 {A=1000, B=100, D=10, F=1}
'XVVX' failed Roman numeral test
7191 {F=5000, A=1000, S=100, G=10, H=1}
'DXCCDA' failed Roman numeral test
4444 {a=5000, A=1000, b=500, B=100, D=50, c=10, f=5, E=1}
Aamemiliki nilai 1 (A = 1, a = 2).