Increasing gaps between consecutive Niven numbers: Difference between revisions

Content added Content deleted
Line 224: Line 224:


nivens :: [Int]
nivens :: [Int]
nivens = [1..] >>= \n -> guard (n `rem` digitSum n == 0) >> pure n
nivens = [1..] >>= \n -> guard (n `rem` digitSum n == 0) >> [n]
where
where
digitSum = sum . unfoldr (\x -> guard (x > 0) >> pure (swap $ x `quotRem` 10))
digitSum = sum . unfoldr (\x -> guard (x > 0) >> pure (swap $ x `quotRem` 10))