All pastes #1250146 Raw Edit

Conway's game of life

public python v1 · immutable
#1250146 ·published 2008-11-10 08:16 UTC
rendered paste body
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 grid    def 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 0     def 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_cells    def 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)