Project Euler: Problem 17

やっぱり適当なんだけど…。

strlen 1 = "one"
strlen 2 = "two"
strlen 3 = "three"
strlen 4 = "four"
strlen 5 = "five"
strlen 6 = "six"
strlen 7 = "seven"
strlen 8 = "eight"
strlen 9 = "nine"
strlen 10 = "ten"
strlen 11 = "eleven"
strlen 12 = "twelve"
strlen 13 = "thirteen"
strlen 14 = "fourteen"
strlen 15 = "fifteen"
strlen 16 = "sixteen"
strlen 17 = "seventeen"
strlen 18 = "eighteen"
strlen 19 = "nineteen"
strlen 20 = "twenty"
strlen 30 = "thirty"
strlen 40 = "forty"
strlen 50 = "fifty"
strlen 60 = "sixty"
strlen 70 = "seventy"
strlen 80 = "eighty"
strlen 90 = "ninety"
strlen 100 = "one"++"hundred"
strlen 200 = "two"++"hundred"
strlen 300 = "three"++"hundred"
strlen 400 = "four"++"hundred"
strlen 500 = "five"++"hundred"
strlen 600 = "six"++"hundred"
strlen 700 = "seven"++"hundred"
strlen 800 = "eight"++"hundred"
strlen 900 = "nine"++"hundred"
strlen 1000 = "one" ++ "thousand"
strlen n | n >= 100 = (strlen $ div n 100) ++ "hundred"++"and" ++ (strlen $ rem n 100)
         | otherwise = (strlen $ n - rem n 10) ++ (strlen $ rem n 10)
main = print $ sum $ map (length . strlen) [1..1000]