Roman numerals/Decode: Difference between revisions
m
→{{header|Haskell}}: (putStrLn . show) -> print
m (→{{header|Haskell}}: (putStrLn . show) -> print) |
|||
Line 2,150:
<lang Haskell>import Data.List (mapAccumL, isPrefixOf)
romanValue :: String -> Int
romanValue s = sum . snd $ mapAccumL tr s
[("M", 1000), ("CM", 900), ("D", 500), ("CD", 400),
("C", 100), ("XC", 90) ,("L", 50), ("XL", 40),
("X", 10), ("IX", 9), ("V", 5), ("IV", 4),
("I", 1)]
where
Line 2,161:
until (\(s, _) -> not $ isPrefixOf k s)
(\(s, n) -> (drop (length k) s, n + v)) (s, 0)
main :: IO ()
main = mapM_ (
["MDCLXVI", "MCMXC", "MMVIII", "MMXVI", "MMXVII"]</lang>
|