38 lines
938 B
Python
38 lines
938 B
Python
Z = [[0,0,0,0,0,0],
|
|
[0,0,0,1,0,0],
|
|
[0,1,0,1,0,0],
|
|
[0,0,1,1,0,0],
|
|
[0,0,0,0,0,0],
|
|
[0,0,0,0,0,0]]
|
|
|
|
def compute_neighbours(Z):
|
|
shape = len(Z), len(Z[0])
|
|
N = [[0,]*(shape[0]) for i in range(shape[1])]
|
|
for x in range(1,shape[0]-1):
|
|
for y in range(1,shape[1]-1):
|
|
N[x][y] = Z[x-1][y-1]+Z[x][y-1]+Z[x+1][y-1] \
|
|
+ Z[x-1][y] +Z[x+1][y] \
|
|
+ Z[x-1][y+1]+Z[x][y+1]+Z[x+1][y+1]
|
|
return N
|
|
|
|
def show(Z):
|
|
for l in Z[1:-1]:
|
|
print(l[1:-1])
|
|
print()
|
|
|
|
def iterate(Z):
|
|
shape = len(Z), len(Z[0])
|
|
N = compute_neighbours(Z)
|
|
for x in range(1,shape[0]-1):
|
|
for y in range(1,shape[1]-1):
|
|
if Z[x][y] == 1 and (N[x][y] < 2 or N[x][y] > 3):
|
|
Z[x][y] = 0
|
|
elif Z[x][y] == 0 and N[x][y] == 3:
|
|
Z[x][y] = 1
|
|
return Z
|
|
|
|
show(Z)
|
|
for i in range(4):
|
|
iterate(Z)
|
|
show(Z)
|