EKG sequence convergence: Difference between revisions
Content added Content deleted
m (→{{header|Python}}: added zkl header) |
(→{{header|zkl}}: added code) |
||
Line 192: | Line 192: | ||
=={{header|zkl}}== |
=={{header|zkl}}== |
||
Using gcd hint from Go. |
|||
⚫ | |||
<lang zkl> |
<lang zkl>fcn ekgW(N){ // --> 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>foreach n in (T(2,5,7)){ println("EKG(%d): %s".fmt(n,ekgW(n).walk(10))) }</lang> |
|||
{{out}} |
{{out}} |
||
<pre> |
<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> |
</pre> |