# John Conway's Game of Life from time import sleep # initial population (three gliders and one blinker, char other than X has no effect) desk = [ '................................................................................', '.X..............................................................................', '..X.............................................................................', 'XXX.............................................................................', '................................................................................', '.......................................................................X........', '......................................................................X.........', '......................................................................XXX.......', '................................................................................', '................................................................................', '................................................................................', '................................................................................', '................................................................................', '................................................................................', '................................................................................', '................................................................................', '......................................................................X.........', '....XXX...............................................................X.........', '......X...............................................................X.........', '....X...........................................................................', '................................................................................', '................................................................................', ] # generation counter generation = 1 # prints the desk def print_desk(desk, generation): print() print('Generation:', generation, ' (press Ctrl+C to stop)') for ln in desk: print(ln) # counts live cells around coordinates x, y def count_cells(desk, x, y): count = 0 for y2 in range(y-1, y+2): y2 = y2 % len(desk) for x2 in range(x-1, x+2): x2 = x2 % len(desk[y2]) if desk[y2][x2] == 'X': count += 1 return count # main cycle while True: print_desk(desk, generation) # evolve the desk - new state stored into the 'desk2' desk2 = [] for y, ln in enumerate(desk): ln2 = '' for x, cell in enumerate(ln): alive = cell == 'X' count = count_cells(desk, x, y) # the three rules od Life: if not alive and count == 3: ln2 += 'X' elif alive and count < 3 or count > 4: ln2 += ' ' else: ln2 += cell desk2.append(ln2) desk = desk2 generation += 1 sleep(0.1)
Source code of John Conway's Game of Life (life.py).