dead = '.'alive = '0'from time import sleepfrom os import systemdef get_size(grid, x=0): for col in grid: x += 1 return xdef make_grid(width, grid=[]): for cols in xrange(width): grid.append(list()) for rows in xrange(width): grid[cols].append(dead) return griddef display(grid): system("clear") width = get_size(grid) print "\t", for col in xrange(width): print col, print "" for row in xrange(width): print "row",row,"\t", for col in xrange(width): print grid[col][row], print ""def is_alive(x, y, grid): try: if grid[x][y] is alive and x >= 0 and y >= 0: return 1 else: return 0 except IndexError: return 0def count_cells(x, y, grid): alive_cells = 0 for col in xrange(-1, 2): for row in xrange(-1, 2): alive_cells += is_alive(x-col, y-row, grid) alive_cells -= is_alive(x, y, grid) return alive_cellsdef next_gen(grid, interval, gens, gen): width = get_size(grid) newgrid = make_grid(width) display(grid) sleep(interval) for x in xrange(width): for y in xrange(width): alive_cells = count_cells(x, y, grid) if alive_cells < 2 or alive_cells > 3: newgrid[x][y] = dead elif alive_cells is 3 and grid[x][y] is dead: newgrid[x][y] = alive else: newgrid[x][y] = grid[x][y] if gen < gens: next_gen(newgrid, interval, gens, gen+1)def inital(grid): choice = 0 while choice is 0: display(grid) coord = raw_input(" Enter coord to change (x, y) >> ").split(',') col, row = int(coord[0]), int(coord[1]) if grid[col][row] is alive: grid[col][row] = dead else: grid[col][row] = alive display(grid) choice = int(raw_input(" Change more? 0 for yes >> ")) interval = int(raw_input(" Interval time (in ms)>> "))/1000.0 gens = int(raw_input(" Generations >> ")) next_gen(grid, interval, gens, 0)def start(): width = int(raw_input(" Width of playfield >> ")) grid = make_grid(width) inital(grid)