# -*- coding: utf-8 -*- # This is the game life http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life import os, time, random # # we need a function to load cells in the neighborhood # def LoadCells(rows, cols): grid = [] col = [0] * cols # first we load an empty grid for i in range(rows): col = [0] * cols grid.append(col) # then we load some cells for x in range(rows): for y in range(cols): cell = random.randint(0, random.randint(0, 1)) grid[x][y] = cell return grid # # here we draw the grid # def DrawGrid(grid): rows = len(grid) cols = len(grid[1]) for x in range(rows): for y in range(cols): if grid[x][y] != 1: print ".", else: print "o", print "\n", # # count neighbors arround a single cell # def CountNeighbors(grid, x, y): neighbors = 0 rows = len(grid) cols = len(grid[1]) if x < rows-1 and grid[x+1][y] == 1: neighbors += 1 if x > 0 and grid[x-1][y] == 1: neighbors += 1 if y < cols-1 and grid[x][y+1] == 1: neighbors += 1 if y > 0 and grid[x][y-1] == 1: neighbors += 1 if x < rows-1 and y < cols-1 and grid[x+1][y+1] == 1: neighbors += 1 if x > 0 and y > 0 and grid[x-1][y-1] == 1: neighbors += 1 if x > 0 and y < cols-1 and grid[x-1][y+1] == 1: neighbors += 1 if x < rows-1 and y > 0 and grid[x+1][y-1] == 1: neighbors += 1 return neighbors # here we define a single iteration # if we have between 3 and 6 neighbors the single cell lives # in other case the cell dies def Iteration(grid): rows = len(grid) cols = len(grid[1]) neighbors = 0 for x in range(rows): for y in range(cols): neighbors = CountNeighbors(grid, x, y) if grid[x][y] == 1: if neighbors < 2 or neighbors > 3: grid[x][y] = 0 else: if neighbors == 3: grid[x][y] = 1 # # iterate n pulses and draws the result of each one # def Iterator(rows, cols, pulses): pulse = 1 grid = LoadCells(rows, cols) while pulse <= pulses: os.system('clear') print "Pulse: ", pulse Iteration(grid) DrawGrid(grid) pulse += 1 time.sleep(0.2) number = input("Please input the number of rows and cols (unique number):") pulses = input("Please input the number of pulses:") Iterator(number, number, pulses)