Is there something I'm missing here? Just yank the first half of the number in question, reverse THAT, and replace the last half of the number with that. Then incrementation or decrementation is easy, to find the alternative choice.
While not the whole answer, solutions (such as the quick Roy Johnson's) would use code similar to this:
sub palindrate
{
my $number = shift . '';
my $front = substr($number, 0, (length($number)+1)/2);
my $back = reverse($front);
chop($front) if not (length($front) % 2);
return $front . $back;
}
Edge cases I can think of:
- input is already palindromic (input is answer),
- higher alternative needs more digits (use all-nines),
- lower alternative needs fewer digits (use all-nines, minus a digit)
- is '-12321-' a valid palindromic answer?
--
[ e d @ h a l l e y . c c ]