EKG sequence convergence: Difference between revisions
Content deleted Content added
m displayed the stretch goal in the same manner and font as the other task's requirements. |
m →{{header|zkl}}: rewrite |
||
Line 478:
}.fp(Ref(N),List(),Walker.chain([2..N-1],[N+1..]))).push(1,N)
}</lang>
<lang zkl>foreach n in (T(2,5,7,9,10)){ println("EKG(%2d): %s".fmt(n,ekgW(n).walk(
{{out}}
<pre>
EKG( 2): 1,2,4,6,3,9,12,8,10,5
EKG( 5): 1,5,10,2,4,6,3,9,12,8
EKG( 7): 1,7,14,2,4,6,3,9,12,8
EKG( 9): 1,9,3,6,2,4,8,10,5,15
EKG(10): 1,10,2,4,6,3,9,12,8,14
</pre>
<lang zkl>fcn convergeAt(n1,n2,etc){ ns:=vm.arglist;
ekgNs:=List()*vm.numArgs; // ( (ekg(n1)), (ekg(n2)) ...)
do(10_0){ // find convergence in this many terms or bail
ekg5.merge(e5); ekg7.merge(e7); // keep terms sorted▼
ekgN:=ekgWs.apply("next"); // (ekg(n1)[n],ekg(n2)[n] ...)
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;▼
if(not ekgN.filter1('!=(ekgN[0])) and not ekgNs.filter1('!=(ekgNs[0])) ){
return();
}
println(ns.concat(",")," don't converge");
}
convergeAt(5,7);
convergeAt(2,5,7,9,10);</lang>
{{out}}
<pre>
EKG(5
EKG(2,5,7,9,10) converge at term 45
</pre>
|