20 lines
346 B
Text
20 lines
346 B
Text
procedure unroman(s) #: convert Roman numeral to integer
|
|
local nbr,lastVal,val
|
|
|
|
nbr := lastVal := 0
|
|
s ? {
|
|
while val := case map(move(1)) of {
|
|
"m": 1000
|
|
"d": 500
|
|
"c": 100
|
|
"l": 50
|
|
"x": 10
|
|
"v": 5
|
|
"i": 1
|
|
} do {
|
|
nbr +:= if val <= lastVal then val else val - 2 * lastVal
|
|
lastVal := val
|
|
}
|
|
}
|
|
return nbr
|
|
end
|