Right, it's not intended as a replacement for the hamming I placed on
RC. Use is for single big values of N >: 50000 (if I understand the
article correctly). Several small values of N fail on generating enough
triples. I detected (assert) failures for N < 30000.

In the range 30000 <: N < 50000 there is always output. Can't tell
though they are all correct.

Perhaps food for the mathematical J-ers?
 

Hallo Roger Hui, je schreef op 06-01-10 22:45:
>    nthHam 100
> |assertion failure: nthHam
> |   0<:c
>
>
>
> ----- Original Message -----
> From: Aai <[email protected]>
> Date: Wednesday, January 6, 2010 9:39
> Subject: Re: [Jprogramming] Rosetta code: hamming numbers
> To: Programming forum <[email protected]>
>
>   
>> Ok, I decided to translate the Haskell program from
>> http://tinyurl.com/yks6mzr
>> (see end of article)
>>
>> nthHam=: 3 : 0
>>  'ln2 ln3 ln5'=. ^. tdv=.2 3 5
>>  lo=. 0.01 -~ hi=. 1.693-~(*/6,y,ln2, ln3, ln5)^%3
>>  t=.,:0$0
>>  for_k. i. 1+ <. hi%ln5 do.
>>    for_j. i. 1+ <. ln3 %~ hi - p=. k*ln5 do.
>>      t=. t, j,k,(>.ln2%~lo-q),(<.ln2%~hi-
>> q), q=. p + j * ln3
>>    end.
>>  end.
>>  c=. +/ 1+_2{"1 }. t 
>>  z=.,:0$0
>>  for_r. t do.
>>    for_i. ([+i.@>:@-~)/2{.2}.r do. z=.z, i,(2{.r), 
>> ({:r)+i*ln2 end.
>>  end.
>>  c=. c - y
>>  assert. 0 <: c
>>  assert. c <: # z
>>  __ q: inv tdv ,: x: 3 {. c { (\: {:"1) }. z
>> )
>>
>>    ts 'it=: nthHam 1e6'
>> 0.358981 1314816
>>    it
>> 519312780448388736089589843750000000000000000000000000000000000000000000000000000000
>>
>> Any comments/improvements ?
>>     
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
>
>   

-- 
Met vriendelijke groet,
=@@i

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to