生命を模倣するゲーム
ジョン・コンウェイというイギリスの数学者が考案したライフゲームというものがある.
これをコンピュータで実行するとシンプルなルールであるにもかかわらず,複雑なパターンを示すことができる.
参考コードを提示する.
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
def initialize_grid(size, density=0.2):
return np.random.choice([0, 1], size*size, p=[1-density, density]).reshape(size, size)
def update(frameNum, img, grid, size):
newGrid = grid.copy()
for i in range(size):
for j in range(size):
total = int((
grid[i, (j-1)%size] + grid[i, (j+1)%size] +
grid[(i-1)%size, j] + grid[(i+1)%size, j] +
grid[(i-1)%size, (j-1)%size] + grid[(i-1)%size, (j+1)%size] +
grid[(i+1)%size, (j-1)%size] + grid[(i+1)%size, (j+1)%size]
))
if grid[i, j] == 1:
if (total < 2) or (total > 3):
newGrid[i, j] = 0
else:
if total == 3:
newGrid[i, j] = 1
img.set_data(newGrid)
grid[:] = newGrid[:]
return img,
def main():
size = 100
grid = initialize_grid(size)
fig, ax = plt.subplots()
img = ax.imshow(grid, interpolation='nearest', cmap='binary')
ani = animation.FuncAnimation(fig, update, fargs=(img, grid, size), frames=200, interval=50, save_count=50)
plt.show()
if __name__ == '__main__':
main()
参考文献