Combinations with repetitions/Square digit chain: Difference between revisions
Content added Content deleted
(Added Go) |
(added Perl 6) |
||
Line 321: | Line 321: | ||
#12024696404768024 numbers produce 1 and 87975303595231975 numbers produce 89 |
#12024696404768024 numbers produce 1 and 87975303595231975 numbers produce 89 |
||
</pre> |
</pre> |
||
=={{header|Perl 6}}== |
|||
{{trans|Kotlin}} |
|||
<lang perl6>#!/usr/bin/env perl6 |
|||
use v6; |
|||
sub endsWithOne($n --> Bool) { |
|||
my $digit; |
|||
my $sum = 0; |
|||
my $nn = $n; |
|||
loop { |
|||
while ($nn > 0) { |
|||
$digit = $nn % 10; |
|||
$sum += $digit²; |
|||
$nn = $nn div 10; |
|||
} |
|||
($sum == 1) and return True; |
|||
($sum == 89) and return False; |
|||
$nn = $sum; |
|||
$sum = 0; |
|||
} |
|||
} |
|||
quietly { # sweep warnings under the carpet |
|||
my @ks = (7, 8, 11, 14, 17); |
|||
for @ks -> $k { |
|||
my @sums = 1,0; |
|||
my $s; |
|||
for (1 .. $k) -> $n { |
|||
for ($n*81 ... 1) -> $i { |
|||
for (1 .. 9) -> $j { |
|||
$s = $j²; |
|||
if ($s > $i) { last }; |
|||
@sums[$i] += @sums[$i-$s]; |
|||
} |
|||
} |
|||
} |
|||
my $count1 = 0; |
|||
for (1 .. $k*81) -> $i { if (endsWithOne($i)) {$count1 += @sums[$i]} } |
|||
my $limit = 10**$k - 1; |
|||
say "For k = $k in the range 1 to $limit"; |
|||
say "$count1 numbers produce 1 and ",$limit-$count1," numbers produce 89"; |
|||
} |
|||
} # to be continued</lang> |
|||
{{out}} |
|||
<pre>For k = 7 in the range 1 to 9999999 |
|||
1418853 numbers produce 1 and 8581146 numbers produce 89 |
|||
For k = 8 in the range 1 to 99999999 |
|||
14255666 numbers produce 1 and 85744333 numbers produce 89 |
|||
For k = 11 in the range 1 to 99999999999 |
|||
15091199356 numbers produce 1 and 84908800643 numbers produce 89 |
|||
For k = 14 in the range 1 to 99999999999999 |
|||
13770853279684 numbers produce 1 and 86229146720315 numbers produce 89 |
|||
For k = 17 in the range 1 to 99999999999999999 |
|||
12024696404768024 numbers produce 1 and 87975303595231975 numbers produce 89</pre> |
|||
=={{header|zkl}}== |
=={{header|zkl}}== |