class PalindromeTransformer:
""" Uses a math trick to turn most positive integer inputs into a palindrome
"""
ERROR = -1
def __init__( self, max ):
self._max = max
def transform( self, input ):
while input < self._max and not self.is_palindrome( input ):
input = self.reverse_positive_integer( input ) + input
if input >= self._max:
return self.ERROR
return input
def is_palindrome( self , input ):
return input == self.reverse_positive_integer( input )
def reverse_positive_integer( self , input ):
reverse = 0
while input > 0:
remainder = input % 10 # get the rightmost digit
reverse = reverse*10 + remainder # build the reverse string
input /= 10
return reverse