Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- ### Project Euler, problem 145 ### --
- euler145 :: Int -> Int
- euler145 = length . filter (and . map odd . digits . f) . filter (not . leading0) . list 1
- where
- rev :: Int -> Int
- rev = read . reverse . show
- digits :: Int -> [Int]
- digits = map (read . return) . show -- in this case, return v = [v] because the Monad is actually a List
- -- "return" = "(:[])"
- list a b = [a..b]
- f x = x + rev x
- leading0 = (== 0) . (`mod` 10)
- str ch = [ch]
- main :: IO()
- main = do
- solveit 1000 -- control
- solveit (10^9) -- problem
- where
- solveit = putStrLn . show . euler145
Advertisement
Add Comment
Please, Sign In to add comment