18 lines
574 B
Text
18 lines
574 B
Text
main :: [sys_message]
|
|
main = [ Stdout (s ++ ": " ++ show (fromroman s) ++ "\n")
|
|
| s <- ["MCMXC", "MDCLXVI", "MMVII", "MMXXIII"]
|
|
]
|
|
|
|
fromroman :: [char]->num
|
|
fromroman = f
|
|
where f [] = 0
|
|
f [x] = r x
|
|
f (x:y:xs) = f (y:xs) - r x, if r x < r y
|
|
= f (y:xs) + r x, otherwise
|
|
r 'M' = 1000
|
|
r 'D' = 500
|
|
r 'C' = 100
|
|
r 'L' = 50
|
|
r 'X' = 10
|
|
r 'V' = 5
|
|
r 'I' = 1
|