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