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()