14 lines
427 B
Haskell
14 lines
427 B
Haskell
hammings :: () -> [Integer]
|
|
hammings() = 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 :: IO ()
|
|
main = do
|
|
print $ take 20 (hammings ())
|
|
print $ (hammings ()) !! 1690
|
|
print $ (hammings ()) !! (1000000-1)
|