RosettaCodeData/Task/Hamming-numbers/Haskell/hamming-numbers-2.hs
2016-12-05 22:15:40 +01:00

13 lines
389 B
Haskell

hamming = 1 : foldr u [] [2,3,5] where
u n s = -- fix (merge s . map (n*) . (1:))
r where
r = merge s (map (n*) (1:r))
merge [] b = b
merge a@(x:xs) b@(y:ys) | x < y = x : merge xs b
| otherwise = y : merge a ys
main = do
print $ take 20 (hamming ())
print $ (hamming ()) !! 1690
print $ (hamming ()) !! (1000000-1)