
Reverse Roman Numerals

In this CheckiO mission
Roman Numerals you have to convert a decimal
number into its representation as a Roman number.
Here you have to do the same but the other way around.
You are given a Roman number as a string and your job is to convert this number into its decimal representation.
A valid Roman number, in the context of this mission, will only
contain Roman numerals as per the below table and follow the rules of
the subtractive notation.
Check out this
Wikipedia article
for more details on how to form Roman numerals.
Numeral | Value |
---|---|
I | 1 (unus) |
V | 5 (quinque) |
X | 10 (decem) |
L | 50 (quinquaginta) |
C | 100 (centum) |
D | 500 (quingenti) |
M | 1,000 (mille) |
Input: A Roman number as a string.
Output: The decimal representation of the Roman number as an int.
Example:
reverse_roman('VI') == 6 reverse_roman('LXXVI') == 76 reverse_roman('CDXCIX') == 499 reverse_roman('MMMDCCCLXXXVIII') == 3888
Precondition:
len(roman_string) > 0
all(char in "MDCLXVI" for char in roman_string) == True
0 < reverse_roman(roman_string) < 4000