john pfeiffer
  • Home
  • Categories
  • Tags
  • Archives

palindromeTransformer

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

  • « palindromeTransformer test
  • find remove remove all »

Published

Apr 25, 2013

Category

python

~83 words

Tags

  • palindrometransformer 2
  • python 180