Close
#! /usr/bin/perl
#use warnings;
#use diagnostics;
use Math::BigInt;
$SIG{'INT'} = 'END_WITH_STATS';
if(! $ARGV[0]) { $initial_number = 87 }
else { $initial_number = $ARGV[0] }
print '>>> Initial number: ', $initial_number, "\n--- Now computing...\n";
while(! is_palindrome($initial_number)) {
$initial_number = Math::BigInt->new($result);
$iteration_count++;
# exit 1 if ($iteration_count == 200);
}
print "---\n>>> The palindrome was found in ", $iteration_count+1, " iterations\n";
exit 0;
sub is_palindrome {
my ($current_number) = @_;
my $reversed_number = reverse($current_number);
$result = $current_number + $reversed_number;
# print $current_number, " + ", $reversed_number, " = ", $result;
if($result eq reverse($result)) {
# print "\t -- The result is a palindrome!\n";
return 1;
}
else {
# print "\t -- :(\n";
return 0;
}
exit 1;
}
sub END_WITH_STATS {
print "\nNumber of iterations: ", $iteration_count;
print " --- Length of last result computed: ", length($initial_number);
print " --- Number recorded in `/tmp/196palindrome.test`\n";
open(FILE,">:utf8","/tmp/196palindrome.test") or die "$!\n";
print {FILE} $initial_number;
close FILE;
exit 1;
}