24 lines
380 B
Perl
24 lines
380 B
Perl
use warnings;
|
|
use strict;
|
|
|
|
my @sq = map { $_ ** 2 } 0 .. 9;
|
|
my %cache;
|
|
my $cnt = 0;
|
|
|
|
sub Euler92 {
|
|
my $n = 0 + join( '', sort split( '', shift ) );
|
|
$cache{$n} //= ($n == 1 || $n == 89) ? $n :
|
|
Euler92( sum( @sq[ split '', $n ] ) )
|
|
}
|
|
|
|
sub sum {
|
|
my $sum;
|
|
$sum += shift while @_;
|
|
$sum;
|
|
}
|
|
|
|
for (1 .. 100_000_000) {
|
|
++$cnt if Euler92( $_ ) == 89;
|
|
}
|
|
|
|
print $cnt;
|