my %lychrels;
my @seeds;
my @palindromes;
my $count;
my $max = 500;
my $limit = '10_000';
for 1 .. $limit -> $int {
my @test;
my $index = 0;
if $int.&is-lychrel {
print "\b" x 20, "Found Lychrel: $int";
%lychrels.push: ($int => @test).invert;
@palindromes.push: $int if $int == $int.flip;
$count++;
}
print "\b" x 20;
sub is-lychrel (Int $l) {
return True if $index++ > $max;
@test.push: my $m = $l + $l.flip;
return False if $m == $m.flip;
$m.&is-lychrel;
}
}
for %lychrels{*}»[0].unique.sort -> $ly {
my $next = False;
for %lychrels -> $l {
for $l.value[1..*] -> $lt {
$next = True and last if $ly == $lt;
last if $ly < $lt;
}
last if $next;
}
next if $next;
@seeds.push: $ly;
}
say " Number of Lychrel seed numbers < $limit: ", +@seeds;
say " Lychrel seed numbers < $limit: ", join ", ", @seeds;
say "Number of Lychrel related numbers < $limit: ", +$count - @seeds;
say " Number of Lychrel palindromes < $limit: ", +@palindromes;
say " Lychrel palindromes < $limit: ", join ", ", @palindromes;
Output:
Number of Lychrel seed numbers < 10_000: 5
Lychrel seed numbers < 10_000: 196, 879, 1997, 7059, 9999
Number of Lychrel related numbers < 10_000: 244
Number of Lychrel palindromes < 10_000: 3
Lychrel palindromes < 10_000: 4994, 8778, 9999