sub palindrate
{
my $X = shift;
my $front = substr($X, 0, (length($X)+1)/2);
my $back = reverse $front;
substr($back, 0, 1) = '' if length($X) % 2;
my $front2 = $front+1;
my $back2 = reverse $front2;
substr($back2, 0, 1) = '' if length($X) % 2;
my $N1 = $front.$back;
my $N2 = $front2.$back2;
return (abs($X-$N1) < abs($X-$N2)) ? $N1 : $N2;
}
Update: fixed typo in code so it really does work as coded now.
The algorithm was correct; the implementation was flawed...and
use warnings would have pointed it right out to me...
Further update: *busted*...It's still not quite right... 91
breaks... ...but I'm gonna leave the code as it stands
|