EKG sequence convergence: Difference between revisions
→{{header|Perl}}: added convergence test
SqrtNegInf (talk | contribs) (Added Perl example) |
SqrtNegInf (talk | contribs) (→{{header|Perl}}: added convergence test) |
||
Line 275:
=={{header|Perl}}==
{{trans|Perl 6}}
<lang perl>use List::Util qw(none sum);
sub gcd { my ($u,$v) = @_; $v ? gcd($v, $u%$v) : abs($u) }
Line 292:
}
sub converge_at {
print "EKG($_): " . join(' ', EKG($_,10)) . "\n" for 2, 5, 7, 9, 10;</lang>▼
my($n1,$n2) = @_;
my $max = 100;
my @ekg1 = EKG($n1,$max);
my @ekg2 = EKG($n2,$max);
do { return $_+1 if $ekg1[$_] == $ekg2[$_] && sum(@ekg1[0..$_]) == sum(@ekg2[0..$_])} for 2..$max;
return "(no convergence in $max terms)";
}
print "EKGs of 5 & 7 converge at term " . converge_at(5, 7) . "\n"</lang>
{{out}}
<pre>EKG(2): 1 2 4 6 3 9 12 8 10 5
Line 298 ⟶ 308:
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
EKGs of 5 & 7 converge at term 21</pre>
=={{header|Perl 6}}==
|