RosettaCodeData/Task/Roman-numerals-Decode/Sidef/roman-numerals-decode-1.sidef

29 lines
560 B
Text
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
func roman2arabic(roman) {
 
var arabic = 0
var last_digit = 1000
 
static m = Hash(
I => 1,
V => 5,
X => 10,
L => 50,
C => 100,
D => 500,
M => 1000,
)
 
roman.uc.chars.map{m{_} \\ 0}.each { |digit|
if (last_digit < digit) {
arabic -= (2 * last_digit)
}
arabic += (last_digit = digit)
}
 
return arabic
}
 
%w(MCMXC MMVIII MDCLXVI).each { |roman_digit|
"%-10s == %d\n".printf(roman_digit, roman2arabic(roman_digit))
}