Integer to RomanNumeral in Haskell 2
投稿者 okkez
ちょっとだけ改善してみたのでまた公開しておく。
コマンドライン引数を一つ受け取って10進数をローマ数字に変換してくれる。
使い方
$ runghc convert.hs 10 #=> X $ runghc convert.hs 999 #=> DCCCCLXXXXVIIII
convert.hsimport System import Numeric main = do cs <- getArgs let [(n,_)] = readDec $ head cs putStrLn $ i2r n old_roman_unit :: Int -> Char old_roman_unit n | n == 1000 = 'M' | n == 500 = 'D' | n == 100 = 'C' | n == 50 = 'L' | n == 10 = 'X' | n == 5 = 'V' | n == 1 = 'I' | otherwise = 'Q' i2r :: Int -> String i2r n = i2r2 n [1000, 500, 100, 50, 10, 5, 1] i2r2 :: Int -> [Int] -> String i2r2 _ [] = [] i2r2 n (u:us) = replicate (n `div` u) (old_roman_unit u) ++ i2r2 (n `mod` u) us


