TI/Skrypty z zajęć/7
Z Brain-wiki
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
'''
• Żywa komórka, która ma mniej niż dwóch żywych sąsiadów umiera z „osamotnienia”
• Żywa komórka, która ma dwóch lub trzech żywych sąsiadów pozostaje żywa
• Żywa komórka, która ma więcej niż trzech żywych sąsiadów umiera z „przeludnienia”
• Każda martwa komórka z dokładnie trzema żywymi sąsiadami staje się żywa poprzez „reprodukcję”
'''
R = np.array([[0,0,0,0,0],[0,0,1,1,0],[0,1,1,0,0],[0,0,1,0,0],[0,0,0,0,0]])
#R = np.array([[0,0,0,0,0],[0,0,0,0,0],[0,1,1,1,0],[0,0,0,0,0],[0,0,0,0,0]])
def step_a(a):
result = np.zeros(a.shape)
for x in range(a.shape[0]):
for y in range(a.shape[1]):
#liczenie sasiadow
nei = np.sum(a[max(x-1,0):x+2,max(y-1,0):y+2])-a[x,y]
if nei==3: result[x,y] = 1
if nei==2: result[x,y] = a[x,y]
return result
def step_b(a):
result = np.zeros(a.shape)
temp = np.zeros((a.shape[0]+2,a.shape[1]+2))
temp[1:-1,1:-1] = a
for x in range(a.shape[0]):
for y in range(a.shape[1]):
#liczenie sasiadow
nei = np.sum(temp[x:x+3,y:y+3])-temp[x+1,y+1]
if nei==3: result[x,y] = 1
if nei==2: result[x,y] = a[x,y]
return result
def step_c(a):
neib = [(-1,-1),(-1,0),(-1,1),(1,-1),(1,0),(1,1),(0,-1),(0,1)]
temp = np.zeros((a.shape[0]+2,a.shape[1]+2))
temp[1:-1,1:-1] = a
result = np.zeros(a.shape)
for x in range(a.shape[0]):
for y in range(a.shape[1]):
#liczenie sasiadow
nei = np.sum([temp[1+x+xx,1+y+yy] for xx,yy in neib])
if nei==3: result[x,y] = 1
if nei==2: result[x,y] = a[x,y]
return result
for n in range(15):
plt.imshow(R, cmap="Greys")
plt.show()
R = step_c(R)