はしくれエンジニアもどきのメモ

情報系技術・哲学・デザインなどの勉強メモ・備忘録です。

Python (NumPy) でLifeGame を作る2 [class]

Python (NumPy) でLifeGame を作る2[class]

前回作ったものをclass にしてみました。

cartman0.hatenablog.com

環境

コード

イテレータで実装したので、 インスタンスnext() でグルグル回せます。

140行弱

LifeGame (クラス)

実行例

初期のセル配列を突っ込んで、インスタンスを生成。


cells = np.zeros((8, 8), 'int')
cells[0:3, -1:-4:-1] = 1
lg = LifeGame(cells)

__str__() を実装しているので、 print関数が使える。


print(lg)

[[0 0 0 0 0 1 1 1]
 [0 0 0 0 0 1 1 1]
 [0 0 0 0 0 1 1 1]
 [0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0]]

iterator を生成して、next()で回す。


lg_iter = iter(lg)
next(lg_iter) #1回目

(1, array([
[0, 0, 0, 0, 0, 2, 0, 2],
[0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 2, 0, 2],
[0, 0, 0, 0, 0, 0, 1, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0]]))

next(lg_iter) #2回目

(2, array([
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 2, 1, 0, 0],
[0, 0, 0, 0, 0, 2, 1, 0],
[0, 0, 0, 0, 0, 0, 2, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0]]))

next(lg_iter) # 3回目

(3, array([
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 2, 2, 1, 0],
[0, 0, 0, 0, 1, 0, 2, 0],
[0, 0, 0, 0, 0, 1, 2, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0]]))