EKG sequence convergence: Difference between revisions

m (→‎{{header|Python}}: added zkl header)
(→‎{{header|zkl}}: added code)
Line 192:
 
=={{header|zkl}}==
Using gcd hint from Go.
<lang zkl></lang>
<lang zkl><fcn ekgW(N){ /lang/ --> iterator
Walker.tweak(fcn(e,dead){
foreach n in ([2..]){
if(not dead.find(n) and e[-1].gcd(n)>1)
{ e.append(n); dead[n]=True; return(n); }
}
}.fp(List(1,N),Dictionary(N,True))).push(1,N)
<lang zkl>}</lang>
<lang zkl>foreach n in (T(2,5,7)){ println("EKG(%d): %s".fmt(n,ekgW(n).walk(10))) }</lang>
{{out}}
<pre>
EKG(2): L(1,2,4,6,3,9,12,8,10,5)
EKG(5): L(1,5,10,2,4,6,3,9,12,8)
EKG(7): L(1,7,14,2,4,6,3,9,12,8)
</pre>
<lang zkl>ekg5,ekg7, ekg5W,ekg7W := List(),List(), ekgW(5),ekgW(7);
ekg5W.next(); ekg7W.next(); // pop initial 1
foreach e5,e7 in (ekg5W.zip(ekg7W)){
ekg5.merge(e5); ekg7.merge(e7); // keep terms sorted
if(e5==e7 and ekg5==ekg7){ // a(n) are ==, both sequences have same terms
println("EKG(5) and EKG(7) converge at term ",ekg7.len() + 1);
break;
}
// should put limiter here
}</lang>
{{out}}
<pre>
EKG(5) and EKG(7) converge at term 21
</pre>
Anonymous user