【Python×Numpy】Pythonでライフゲームを作成

はじめに

こんにちは、がんがんです。
前回、PythonGUIライブラリTkinterを試した際にライフゲームを実装しました。
gangannikki.hatenadiary.jp

今回はNumpyで実装してみたので、その備忘録です。

参考記事

参考記事はこちらです。
cartman0.hatenablog.com

GitHubのリンクも貼っておきます。
LifeGameのクラスファイル(matplotlibで可視化) · GitHub

実行例

Tテトロミノ

f:id:gangannikki:20181114153556g:plain

ミツバチの巣箱

f:id:gangannikki:20181114153612g:plain

コード

LifeGameクラスはGitHubのものを写経したため割愛します。

Tテトロミノ

import numpy as np
from lifegame import LifeGame

#  Tテトロミノ
print("Tテトロミノ play")
CELLS_WIDTH = 11
cells = np.zeros((CELLS_WIDTH, CELLS_WIDTH), "int")
cells[int(CELLS_WIDTH/2), 4:7] = 1
cells[int(CELLS_WIDTH/2)+1, 5:6] = 1
print(cells)

lg = LifeGame(cells)
lg.plt_anime(20, save_file="t-tetoromino.gif")

ミツバチの巣箱

import numpy as np
from lifegame import LifeGame

#  ミツバチの巣箱(beehive)
print("ミツバチの巣箱 play")
CELLS_WIDTH = 17
cells = np.zeros((CELLS_WIDTH, CELLS_WIDTH), "int")
cells[int(CELLS_WIDTH/2)-1, int(CELLS_WIDTH/2)-1:int(CELLS_WIDTH/2)+2] = 1
cells[int(CELLS_WIDTH/2)+1, int(CELLS_WIDTH/2)-1:int(CELLS_WIDTH/2)+2] = 1
cells[int(CELLS_WIDTH/2), int(CELLS_WIDTH/2)-2] = 1
cells[int(CELLS_WIDTH/2), int(CELLS_WIDTH/2)+2] = 1
print(cells)

lg = LifeGame(cells)
lg.plt_anime(25, save_file="beehive.gif")

まとめ

今回はNumpyでライフゲームを実装しました。
実際に動かしてみると興味深いですね。

Arudinoで実装し、LEDマトリクスなどで表示させた例も見つけたので時間あれば試してみます。
Arduinoと8x8マトリクスLEDでライフゲーム · GitHub