haskell: add [p12, p17]
Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
This commit is contained in:
22
haskell/p17.hs
Normal file
22
haskell/p17.hs
Normal file
@@ -0,0 +1,22 @@
|
||||
--The answer is written for numbers <= 1000
|
||||
|
||||
main :: IO ()
|
||||
main = putStr $ show $ solve 1000
|
||||
|
||||
solve :: Int -> Int
|
||||
solve n = sum $ map (length . numWord) [1 .. n]
|
||||
|
||||
numWord :: Int -> [Char]
|
||||
numWord n
|
||||
| n == 0 = ""
|
||||
| n == 1000 = "onethousand"
|
||||
| n < 20 = ones !! (n - 1)
|
||||
| n < 100 = tens !! (div n 10 - 2) ++ numWord (mod n 10)
|
||||
| mod n 100 == 0 = numWord (div n 100) ++ "hundred"
|
||||
| otherwise = numWord (div n 100) ++ "hundredand" ++ numWord (mod n 100)
|
||||
where
|
||||
tens :: [[Char]]
|
||||
tens = ["twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"]
|
||||
|
||||
ones :: [[Char]]
|
||||
ones = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"]
|
Reference in New Issue
Block a user