QSort in D: is this best?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Dec 21 14:44:31 PST 2009


This is a great example that I don't have the time to look into now. In 
essence the task is to generate all numbers of the form 2^^a*3^^b*5^^c 
where a, b, and c are natural numbers.

Currently Phobos doesn't have the means to compute the cross-product of 
ranges. I encourage people to think about implementing that.

Andrei

bearophile wrote:
> You can try translating this in efficient, readable and short D2 code using Phobos2 (the purpose is to find spots where Phobos2 may need improvements):
> http://rosettacode.org/wiki/Hamming_numbers#Haskell
> 
> Haskell version:
> 
> hamming = 1 : map (2*) hamming `merge` map (3*) hamming `merge` map (5*) hamming
>      where merge (x:xs) (y:ys)
>             | x < y = x : xs `merge` (y:ys)
>             | x > y = y : (x:xs) `merge` ys
>             | otherwise = x : xs `merge` ys
>  
> main = do
>     print $ take 20 hamming
>     print $ hamming !! 1690
>     print $ hamming !! 1000000
> 
> (There's also a good enough Python version in that page).
> 
> Bye,
> bearophile



More information about the Digitalmars-d mailing list