Super-d numbers: Difference between revisions

→‎{{header|Perl 6}}: Various style and efficiency twiddles, combined versions into the most performant variation
(→‎{{header|zkl}}: added code)
(→‎{{header|Perl 6}}: Various style and efficiency twiddles, combined versions into the most performant variation)
Line 183:
 
=={{header|Perl 6}}==
===via map + grep:k + .index===
{{works with|Rakudo|2019.07.1}}
 
2 - 6 takes a few seconds, 7 & 8 take a few minutes; I got tired of waiting for 9.
 
<lang perl6>mysub \nsuper =($d) 10;{
 
sub super ($d) {
my $run = $d x $d;
"First {n}10 super-{$d} numbers:\n{ (^Inf .map( 0 ~grep: ($d * * ** $d ).grep: *Str.indexcontains($run), :k)[^n10] }\n"
}
 
put .&super for 2 .. 8</lang>
# Required
.say for (2..6).map: -> $d { super $d }
# Optional
.say for (7..8).map: -> $d { super $d }</lang>
 
<pre>First 10 super-2 numbers:
Line 220 ⟶ 214:
First 10 super-8 numbers:
185423 641519 1551728 1854230 6415190 12043464 12147605 15517280 16561735 18542300</pre>
 
===via grep + .contains in lazy array===
 
<lang perl6>
for 2..6 -> $d {
my $digits = $d x $d;
my @super = grep { ($_ ** $d * $d).contains($digits) }, ^Inf;
 
say "$d: ", @super.head(10);
}
</lang>
{{out}}
<pre>2: (19 31 69 81 105 106 107 119 127 131)
3: (261 462 471 481 558 753 1036 1046 1471 1645)
4: (1168 4972 7423 7752 8431 10267 11317 11487 11549 11680)
5: (4602 5517 7539 12955 14555 20137 20379 26629 32767 35689)
6: (27257 272570 302693 323576 364509 502785 513675 537771 676657 678146)</pre>
 
=={{header|zkl}}==
10,333

edits