Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- ### Project Euler, problem 254 ### --
- import Data.List (find)
- import Data.Maybe (fromJust)
- fact :: Integer -> Integer
- fact n | n > 1 = n * fact (n-1)
- | n == 0 || n == 1 = 1
- | otherwise = 0
- intToLStr :: Integer -> [String]
- intToLStr = map (\x -> [x]) . show
- digsSum :: Integer -> Integer
- digsSum = sum . map read . intToLStr
- f :: Integer -> Integer
- f = sum . map (fact . read) . intToLStr
- sf :: Integer -> Integer
- sf = digsSum . f
- g :: Integer -> Integer
- g i = fromJust $ find ((== i) . sf) [1..]
- sg :: Integer -> Integer
- sg = digsSum . g
- solveit :: Integer -> Integer
- solveit n = sum $ map sg [1..n]
- main = do
- putStrLn . show $ solveit 20 -- control-case
- putStrLn . show $ solveit 150 -- problem
Advertisement
Add Comment
Please, Sign In to add comment