Four score and seven years ago our fathers brought forth upon this continent a new nation, conceived in liberty and dedicated to the proposition that all men are created equal
How long do you think it would take you to manually break the address up into 13 character lines, breaking those lines at appropriate spaces?I'm not so concerned with the estimation process. This is a fun problem for a beginning Python coder. My solution is below, but please try it yourself first. And yes, I was pleased with my time, but I've done this before. How to handle the beginning and the end is the key. I just make them special cases.
[ UPDATE: You could also just look for the right function in the standard library! ]
> python script.py 10 Four score 9 and seven 13 years ago our 7 fathers 13 brought forth 9 upon this 11 continent a 11 new nation, 12 conceived in 11 liberty and 12 dedicated to 3 the 11 proposition 12 that all men 11 are created 5 equal |
FH = open('data.txt','r') data = FH.read().strip().split() FH.close() pL = list() N = 13 for word in data: assert len(word) <= N tL = [data.pop(0)] for word in data: n = len(' '.join(tL)) n += 1 + len(word) if n > N: pL.append(' '.join(tL)) tL = [word] else: tL.append(word) pL.append(word) for line in pL: print "%2d" % len(line), line |