TI/Programowanie dla Fizyków Medycznych/Array2D
Z Brain-wiki
Ćwiczenia z przetwarzania tablic 2D
Gra w zycie Conwaya
import numpy as np
import pylab as py
py.ion()
a=np.zeros((100,100))
def ile_sasiadow(x,y,macierz):
return np.sum(macierz[max(0,x-1):min(macierz.shape[0],x+2),max(0,y-1):min(macierz.shape[1],y+2)].flatten())-macierz[x,y]
def nowy_stan_komorki(x,y,macierz):
sasiadow=ile_sasiadow(x,y,macierz)
if sasiadow==3: return 1
if sasiadow==2 and macierz[x,y]==1: return 1
return 0
def krok(macierz):
wynik=macierz.copy()
for x in range(wynik.shape[0]):
for y in range (wynik.shape[1]):
wynik[x,y]=nowy_stan_komorki(x,y,macierz)
return wynik
lokomotywa=np.array([[1,1,1,0,1],[1,0,0,0,0],[0,0,0,1,1],[0,1,1,0,1],[1,0,1,0,1]])
a[45:50,45:50]=lokomotywa
for n in range(1000):
py.imshow(a, cmap='Greys', interpolation='nearest')
a=krok(a)
py.draw()