Viết một thuật toán để giải thích một chuỗi các chữ cái là một chữ số La Mã. (xem quy tắc số La Mã dưới đây)
Mỗi chữ cái riêng biệt có một giá trị thập phân Ả Rập phù hợp, không có tối đa. Nhưng bạn không có chìa khóa trước, do đó, {A=10, I=1, X=5, ... Z=1000000}
được quyết định bởi sự giải thích của bạn.
Thử thách
- Đọc đầu vào qua
STDIN
hoặc tương đương và ghi đầu ra quaSTDOUT
hoặc tương đương - Đầu vào hợp lệ là sự kết hợp của chữ hoa và chữ thường tức là khớp
\[a-zA-Z]+\
- Đầu vào phải được xác thực để xem chuỗi ký tự có thể được hiểu là số La Mã hợp lệ
- Nếu đầu vào vượt qua xác thực, đầu ra hợp lệ phải là giải thích thập phân tiếng Ả Rập thấp nhất và khóa được sử dụng tức
Aa
là được hiểu là4 {a=5, A=1}
không6 {A=5, a=1}
hoặc9 {a=10, a=1}
Quy tắc số La Mã
Chỉ các chữ cái đại diện cho sức mạnh của mười có thể được lặp lại, tối đa ba lần liên tiếp và tổng cộng bốn lần, ví dụ
II
III
XXXIX
Nếu một hoặc nhiều chữ cái được đặt sau một chữ cái khác có giá trị lớn hơn, hãy thêm số tiền đó
AAaa => 22 {A=10, a=1} (20 + 2 = 22) bbAAaa => 222 {b=100, A=10, a=1} (200 + 20 + 2 = 222)
Nếu một chữ cái được đặt trước một chữ cái khác có giá trị lớn hơn, hãy trừ đi số tiền đó
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)
Một số quy tắc được áp dụng để trừ số tiền từ chữ số La Mã:
- Chỉ trừ đi sức mạnh của mười tức là
1, 10, 100...
không5, 50, 500...
- Không có phép trừ kép do đó
18
được viết làXVIII
khôngIIXX (10 + 10 - 1 - 1)
- Đừng trừ một số lớn hơn một số lớn hơn mười lần.
Bạn có thể trừ1
từ5
hay10
nhưng không từ50, 100, 500...
- Chỉ trừ đi sức mạnh của mười tức là
Thí dụ
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}
Aa
có giá trị là 1 (A = 1, a = 2).