[[AlgorithmQuiz/LcdDisplay]] [[destine]]의 [[C++]] 코드보다는 정말이지 짧고, 간결한 코드가 아닐 수 없다. 역시 [[Python]]... 난 이 문제를 풀면서, FastFeedback의 중요성을 다시 느꼈다. 머리속에 정확히 정리가 안되도, 그때그때 눈으로 중간결과를 확인하면서 하니까, 더 쉽게 문제해결에 도달하더라. --[[yong27]], 2004-12-29 {{{#!python import unittest numDict={ # 0 1 2 3 4 5 6 '0' : ('-','|','|',' ','|','|','-'), '1' : (' ',' ','|',' ',' ','|',' '), '2' : ('-',' ','|','-','|',' ','-'), '3' : ('-',' ','|','-',' ','|','-'), '4' : (' ','|','|','-',' ','|',' '), '5' : ('-','|',' ','-',' ','|','-'), '6' : ('-','|',' ','-','|','|','-'), '7' : ('-',' ','|',' ',' ','|',' '), '8' : ('-','|','|','-','|','|','-'), '9' : ('-','|','|','-',' ','|','-'), } def drawHorizon(num, pos, size): r=list() for each in num: tick = numDict[each] r.append(' '+tick[pos]*size+' ') return ' '.join(r) def drawVertical(num, pos, size): r=list() for i in range(size): subr = list() for each in num: tick = numDict[each] subr.append(tick[pos]+' '*size+tick[pos+1]) r.append(' '.join(subr)) return '\n'.join(r) def printToLcd(num, s=1): r = list() r.append(drawHorizon(num, 0, s)) r.append(drawVertical(num, 1, s)) r.append(drawHorizon(num, 3, s)) r.append(drawVertical(num, 4, s)) r.append(drawHorizon(num, 6, s)) return '\n'.join(r) def main(): inputs = list() while True: rawInputs = raw_input() if rawInputs == str(0): break inputs.append(rawInputs.split()) for s, num in inputs: print printToLcd(num,int(s)) class LcdTest(unittest.TestCase): def testOne(self): expected = '''\ - | | - | | - ''' self.assertEquals(expected, printToLcd('8')) def testTwo(self): expected = '''\ - - | | | | - - | | | | - - ''' self.assertEquals(expected, printToLcd('88')) def testSize(self): expected = '''\ -- -- | | | | | | | | -- -- | | | | | | | | -- -- ''' self.assertEquals(expected, printToLcd('88',2)) if __name__=='__main__': unittest.main(argv=('','-v')) #main() }}}