RosettaCodeData/Task/EKG-sequence-convergence/Zkl/ekg-sequence-convergence-3.zkl
2023-07-01 13:44:08 -04:00

16 lines
710 B
Text

fcn convergeAt(n1,n2,etc){ ns:=vm.arglist;
ekgWs:=ns.apply(ekgW); ekgWs.apply2("next"); // pop initial 1
ekgNs:=List()*vm.numArgs; // ( (ekg(n1)), (ekg(n2)) ...)
do(1_000){ // find convergence in this many terms or bail
ekgN:=ekgWs.apply("next"); // (ekg(n1)[n],ekg(n2)[n] ...)
ekgNs.zipWith(fcn(ns,n){ ns.merge(n) },ekgN); // keep terms sorted
// are all ekg[n]s == and both sequences have same terms?
if(not ekgN.filter1('!=(ekgN[0])) and not ekgNs.filter1('!=(ekgNs[0])) ){
println("EKG(", ns.concat(","), ") converge at term ",ekgNs[0].len() + 1);
return();
}
}
println(ns.concat(",")," don't converge");
}
convergeAt(5,7);
convergeAt(2,5,7,9,10);