-
-
Save martin12333/f8d9b447369787a332443fa5e5efe656 to your computer and use it in GitHub Desktop.
Array-oriented version of the game of life
This file contains 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
from numpy.random import rand | |
from numpy import r_, ix_, uint8, roll | |
import matplotlib.pyplot as plt | |
import time | |
size = 200 | |
GRID = (rand(size,size) > 0.75).astype(uint8) | |
# Rotate indices because the world is round | |
indx = r_[0:size] | |
up = roll(indx, -1) | |
down = roll(indx, 1) | |
fig = plt.figure() | |
ax = fig.add_subplot(111) | |
img = ax.imshow(GRID,interpolation='nearest',cmap='gray') | |
def update_image(idleevent): | |
if update_image.i==2000: | |
return False | |
global GRID | |
neighbors = GRID[up,:] + GRID[down,:] + GRID[:,up] + GRID[:,down] + \ | |
GRID[ix_(up,up)] + GRID[ix_(up,down)] + GRID[ix_(down,up)] + \ | |
GRID[ix_(down,down)] | |
GRID = (neighbors == 3) | (GRID & (neighbors==2)) | |
img.set_data(GRID) | |
fig.canvas.draw_idle() | |
time.sleep(0.02) | |
update_image.i += 1 | |
update_image.i = 0 | |
import wx | |
wx.EVT_IDLE(wx.GetApp(), update_image) | |
plt.show() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment