http://www.colorless-sight.jp/wiki/?ProjectEular%2FProblem17
-- Problem 17 module Main (main) where main :: IO () main = print $ problem17 problem17 :: Int problem17 = sum $ map (length . to_word) [1..1000] to_word :: Int -> String to_word n | n > 1000 = "" | n < 1 = "" | n == 1 = "One" | n == 2 = "Two" | n == 3 = "Three" | n == 4 = "Four" | n == 5 = "Five" | n == 6 = "Six" | n == 7 = "Seven" | n == 8 = "Eight" | n == 9 = "Nine" | n == 10 = "Ten" | n == 11 = "Eleven" | n == 12 = "Twelve" | n == 13 = "Thirteen" | n == 14 = "Fourteen" | n == 15 = "Fifteen" | n == 16 = "Sixteen" | n == 17 = "Seventeen" | n == 18 = "Eighteen" | n == 19 = "Nineteen" | n == 20 = "Twenty" | n == 30 = "Thirty" | n == 40 = "Forty" | n == 50 = "Fifty" | n == 60 = "Sixty" | n == 70 = "Seventy" | n == 80 = "Eighty" | n == 90 = "Ninety" | n == 1000 = "OneThousand" | n < 100 = to_word (n - mod10) ++ to_word mod10 | mod100 == 0 = to_word div100 ++ "Hundred" | otherwise = to_word div100 ++ "HundredAnd" ++ to_word mod100 where mod10 = mod n 10 (div100, mod100) = divMod n 100 |
最新の20件2023-08-12
2022-12-28
2017-08-15
2014-01-31
2014-01-29
2013-06-04
2012-11-23
2010-08-01
2010-07-24
Tweet
|