Mažytė lėkštė makaronų

A small bowl of pasta

2 notes &

math puzzle

In high school a classmate showed me this math puzzle:

Question: How next line should look like?
1
11
21
1211
111221
312211
13112221
<Next Line>?

Fun fact: 50th line has 894810 numbers :)

Solution:

def gen_next_line(line):
    next_line = ”
    for i in range(len(line)):
        c = line[i]
        if len(next_line) > 1 and next_line[-1] == c:
            count = int(next_line[-2])
            next_line = next_line[:-2] + str(count + 1) + c
        else:
            next_line += ‘1’ + c
    return next_line
   
   
def main(line_no):
    line = ‘1’
    if line_no > 1:
        for i in range(1, line_no):
            line = gen_next_line(line)
    print line

if __name__ == ‘__main__’:
    if len(sys.argv) != 2:
        print ‘Usage: %s line_no’ % __file__
    else:
        main(int(sys.argv[1]))

Filed under puzzle python math

  1. sakinis posted this