[AlgorithmQuiz/LcdDisplay] [windist], 2004-12-29 {{{#!python digits={ 1:["TR","BR"], 2:["T","TR","M","BL","B"], 3:["T","TR","M","BR","B"], 4:["TL","TR","M","BR"], 5:["T","TL","M","BR","B"], 6:["T","TL","M","BL","BR","B"], 7:["T","TL","TR","BR"], 8:["T","TL","TR","M","BL","BR","B"], 9:["T","TL","TR","M","BR","B"], 0:["T","TL","TR","BL","BR","B"], } def render(i,size=1): number = digits[i] d = list() d.append(drawHorBar(number,"T",size)) d.extend(drawVerBar(number,"T",size)) d.append(drawHorBar(number,"M",size)) d.extend(drawVerBar(number,"B",size)) d.append(drawHorBar(number,"B",size)) return d def drawVerBar(number,flag,size): lines = list() for i in range(size): line="" if flag+"L" in number: line+='|' else: line+=' ' line+=' ' * size if flag+"R" in number: line+='|' else: line+=' ' lines.append(line) return lines def drawHorBar(number,flag,size): if flag in number: return ' ' + '-' * size + ' ' else: return ' ' * (size + 2) def mergeDigits(digit1, digit2): for i,r in enumerate(digit1): r+=' ' + digit2[i] digit1[i]=r return digit1 def display(number,size): digits = reduce(mergeDigits,[render(int(i),size) for i in str(number)]) print '\n\r'.join(digits) if __name__=="__main__": line = raw_input() inputs = list() while line != '0': inputs.append(map(int,line.split())) line = raw_input() for size, number in inputs: display(number,size) }}}