ReverseAndAdd/ ¶
~cpp import unittest class ReverseAndAdder: def reverse(self, number): numberStr = str(number) reverseStr = '' for i in range(len(numberStr)): reverseStr += numberStr[len(numberStr) - i - 1] return int(reverseStr) def isPalindrome(self, number): numberStr = str(number) for i in range(len(numberStr)): if(numberStr[i] != numberStr[len(numberStr) - i - 1]): return False return True def reverseAndAdd(self, number): count = 0 for i in range(1000): number = number + self.reverse(number) count += 1 if(self.isPalindrome(number)): break else: print 'No reverse and add' return None return (count, number) class ReverseAndAdderTestCase(unittest.TestCase): def testReverse(self): raa = ReverseAndAdder() self.assertEquals(1234, raa.reverse(4321)) self.assertEquals(12321, raa.reverse(12321)) def testIsPalindrome(self): raa = ReverseAndAdder() self.assertEquals(False, raa.isPalindrome(4321)) self.assertEquals(True, raa.isPalindrome(12321)) self.assertEquals(True, raa.isPalindrome(1221)) def testReverseAndAdd(self): raa = ReverseAndAdder() self.assertEquals((4, 9339), raa.reverseAndAdd(195)) self.assertEquals((5, 45254), raa.reverseAndAdd(265)) self.assertEquals((3, 6666), raa.reverseAndAdd(750)) if __name__ == '__main__': #unittest.main() raa = ReverseAndAdder() result = raa.reverseAndAdd(int(input())) if(result != None): print str(result[0]) + ' ' + str(result[1])
그 . --
reverse 과 간 :
~cpp >>> n=4321 >>> int(str(n)[::-1]) #python 2.3 1234 >>> int(''.join(reversed(str(d)))) #python 2.4 1234
for 각 고 고, 과 구 교 .
...
~cpp >>> def rev(d): return int(str(d)[::-1]) >>> def revAndAdd(d): c=0 while True: rd=rev(d) if d==rd:break d+=rd c+=1 return c,d >>> revAndAdd(195) (4, 9339)
all tests data will be computable with less than 1000 iterations (additions) 고 .
--JuNe
pseudo code . --