Skip to content

Instantly share code, notes, and snippets.

@2GMon
Created August 8, 2012 01:59
Show Gist options
  • Save 2GMon/3291381 to your computer and use it in GitHub Desktop.
Save 2GMon/3291381 to your computer and use it in GitHub Desktop.
-- Project Euler : Problem 17
-- 1000の時にスペースを入れてしまっていたのを修正
numToStr :: Int -> String
numToStr 1 = "one"
numToStr 2 = "two"
numToStr 3 = "three"
numToStr 4 = "four"
numToStr 5 = "five"
numToStr 6 = "six"
numToStr 7 = "seven"
numToStr 8 = "eight"
numToStr 9 = "nine"
numToStr 10 = "ten"
numToStr 11 = "eleven"
numToStr 12 = "twelve"
numToStr 13 = "thirteen"
numToStr 14 = "fourteen"
numToStr 15 = "fifteen"
numToStr 16 = "sixteen"
numToStr 17 = "seventeen"
numToStr 18 = "eighteen"
numToStr 19 = "nineteen"
numToStr 20 = "twenty"
numToStr 30 = "thirty"
numToStr 40 = "forty"
numToStr 50 = "fifty"
numToStr 60 = "sixty"
numToStr 70 = "seventy"
numToStr 80 = "eighty"
numToStr 90 = "ninety"
numToStr 1000 = "onethousand"
numToStr x
| x < 100 = numToStr (x - (x `mod` 10)) ++ numToStr (x `mod` 10)
| x >= 100 = if (x `mod` 100 == 0)
then numToStr (x `div` 100) ++ "hundred"
else numToStr (x `div` 100) ++ "hundredand" ++ numToStr (x `mod` 100)
main = print $ sum $ map length $ map numToStr [1..1000]
-- 21124
-- ./dailycoding17 0.01s user 0.00s system 80% cpu 0.008 total
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment