-
-
Save CTimmerman/43fa469a9a58654e528bf35dd6b235fc to your computer and use it in GitHub Desktop.
Conway's Really Simple Game of Life based on ("Stop Writing Classes" PyCon 2012)[https://www.youtube.com/watch?v=o9pEzgHorH0]
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import itertools | |
# Conway's Really Simple Game of Life based on "Stop Writing Classes" PyCon 2012 | |
def neighbors(point): | |
x,y = point | |
yield x + 1, y | |
yield x - 1, y | |
yield x, y + 1 | |
yield x, y - 1 | |
yield x + 1, y + 1 | |
yield x + 1, y - 1 | |
yield x - 1, y + 1 | |
yield x - 1, y - 1 | |
def advance(board): | |
newstate = set() | |
recalc = board | set(itertools.chain(*map(neighbors, board))) | |
for point in recalc: | |
count = sum((neigh in board) | |
for neigh in neighbors(point)) | |
if count == 3 or (count == 2 and point in board): | |
newstate.add(point) | |
return newstate | |
glider = set([(0, 0), (1, 0), (2, 0), (0, 1), (1, 2)]) | |
for i in range(1000): | |
glider = advance(glider) | |
print glider |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment