Jump to content

EKG sequence convergence: Difference between revisions

→‎{{header|Perl}}: added convergence test
(Added Perl example)
(→‎{{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 "EKG($_): " . join(' ', EKG($_,10)) . "\n" for 2, 5, 7, 9, 10;</lang>
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</pre>
EKGs of 5 & 7 converge at term 21</pre>
 
=={{header|Perl 6}}==
2,392

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.