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
|