Python (NumPy) でLifeGame を作る2 [class]
Python (NumPy) でLifeGame を作る2[class]
前回作ったものをclass にしてみました。
環境
コード
イテレータで実装したので、 インスタンスをnext()
でグルグル回せます。
140行弱
実行例
初期のセル配列を突っ込んで、インスタンスを生成。
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]]))
参考リンク