14 lines
347 B
Haskell
14 lines
347 B
Haskell
import Data.Char (digitToInt)
|
|
import Data.Set (member, insert, empty)
|
|
|
|
isHappy :: Integer -> Bool
|
|
isHappy = p empty
|
|
where
|
|
p _ 1 = True
|
|
p s n
|
|
| n `member` s = False
|
|
| otherwise = p (insert n s) (f n)
|
|
f = sum . fmap ((^ 2) . toInteger . digitToInt) . show
|
|
|
|
main :: IO ()
|
|
main = mapM_ print $ take 8 $ filter isHappy [1 ..]
|