Hamming numbers: Difference between revisions

adding lambdatalk task
(→‎"Cyclical Iterators": upd: since 3.6 the tee() is efficient, sharing)
(adding lambdatalk task)
Line 6,681:
Took 381 milliseconds for the last.</pre>
Run on a AMD Bulldozer FX8120 3.1 GHz which is about half the speed as an equivalent Intel (but also half the price).
 
=={{header|Lambdatalk}}==
<syntaxhighlight lang="scheme">
{def hamming
 
{def hamming.test
{lambda {:h :n :x :a :i}
{if {= :x {A.get :n :h}}
then {* :a {A.get {+ :i 1} :h}} {+ :i 1}
else :x :i}
}}
 
{def hamming.rec
{lambda {:h :x2 :i :x3 :j :x5 :k :limit :n}
{hamming.loop :h
{hamming.test :h :n :x2 2 :i}
{hamming.test :h :n :x3 3 :j}
{hamming.test :h :n :x5 5 :k}
:limit
{+ :n 1} }
}}
 
{def hamming.loop
{lambda {:h :x2 :i :x3 :j :x5 :k :limit :n}
{if {>= :n :limit}
then {A.last :h}
else {hamming.rec {A.set! :n {min :x2 :x3 :x5} :h}
:x2 :i :x3 :j :x5 :k :limit :n}
}}}
 
{lambda {:n}
{hamming.loop {A.new 1} 2 0 3 0 5 0 :n 1}
}}
-> hamming
 
{S.map hamming {S.serie 1 20}}
-> 1 2 3 4 5 6 8 9 10 12 15 16 18 20 24 25 27 30 32 36
 
{hamming 1691}
-> 2125764000 // 175ms
 
 
 
</syntaxhighlight>
 
=={{header|Liberty BASIC}}==
99

edits