
212
付録 演習の解答
A.2
解答:
Conway
のライフゲーム
以下は「
3.4.1
演習:
Conway
のライフゲーム」の解答です。
Nicolas Rougier
(
@NPRougier
、
https://github.com/rougier
)は、自身の
NumPy
の演習
100
題のウェブページ(
http://www.labri.fr/perso/nrougier/teaching/numpy.100/
)の
Exercise 79
に
NumPy
だけを使った解答を載せています。
def next_generation(Z):
N = (Z[0:-2,0:-2] + Z[0:-2,1:-1] + Z[0:-2,2:] +
Z[1:-1,0:-2] + Z[1:-1,2:] +
Z[2: ,0:-2] + Z[2: ,1:-1] + Z[2: ,2:])
# Apply rules
規則を適用。
birth = (N==3) & (Z[1:-1,1:-1]==0)
survive = ((N==2) | (N==3)) & (Z[1:-1,1:-1]==1)
Z[...] = 0
Z[1:-1,1:-1][birth | survive] = 1
return Z
図
A-1
グリッド線を重ねた宇宙飛行士の画像