RosettaCodeData/Task/Hamming-numbers/Perl-6/hamming-numbers-2.pl6
2019-09-12 10:33:56 -07:00

16 lines
310 B
Raku

my \Hammings := gather {
my %i = 2, 3, 5 Z=> (Hammings.iterator for ^3);
my %n = 2, 3, 5 Z=> 1 xx 3;
loop {
take my $n := %n{2, 3, 5}.min;
for 2, 3, 5 -> \k {
%n{k} = %i{k}.pull-one * k if %n{k} == $n;
}
}
}
say Hammings.[^20];
say Hammings.[1691 - 1];
say Hammings.[1000000 - 1];