U E D R , A S I H C RSS

Reverse And Add/황재선

ReverseAndAdd

~cpp 
import unittest

MAX_VALUE = 4294967295
MAX_COUNT = 1000
class ReverseAndAdd:
    def __init__(self):
        self.result = ()
    def compute(self, n):
        count = 0
        while n != int(str(n)[::-1]):
            n += int(str(n)[::-1])
            count+= 1
            if self.overBoundary(count, n):
                return -1, n
        if self.overBoundary(count, n):
            return -1, n
        return count, n

    def overBoundary(self, count, n):
        if count >= MAX_COUNT or n > MAX_VALUE:
            return True
        return False

    def printRepeatNum(self, num):
        for i in range(0,num*2,2):
            print self.result[i], self.result[i+1]
        

class ReverseAndAddTestCase(unittest.TestCase):
    def test1(self):
        r = ReverseAndAdd()
        self.assertEquals((4,9339), r.compute(195))
        self.assertEquals((5,45254), r.compute(265))
        self.assertEquals((3,6666), r.compute(750))
        self.assertEquals((0,111), r.compute(111))

def main():
    r = ReverseAndAdd()
    num = input()
    for testcase in range(num):
        r.result += r.compute(input())
    r.printRepeatNum(num)        

if __name__ == '__main__':
    #unittest.main()
    main()


쓰레드

결과 튜플을 ((4,9339), (5,45254), (3,6666)) 와 같이 중첩 튜플로 하려했으나 못하겠다. -- 재선

테스트가 프로그램의 최종 테스트 밖에 없구나. 바로 모든 소스를 만들지는 않았을테고... 테스트 보폭을 줄이는 게 좋을 듯. --재동
reverse 부분은 shell에서 약간의 테스트를 거쳤습니다. 그래서 따로 테스트 코드를 만들지 않았는데 그 결과 디자인이 나빠진 것 같습니다. 아직은 tdd에 익숙하지 않아서 모든 함수를 테스트 코드화하면서 보폭을 줄이는 훈련을 해야겠습니다. -- 재선

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.0094 sec