任意のセルの周辺のセル(ムーア近傍)を取得するためにget_around_cellsメソッドを作成する。
class LifeGame:
def __init__(self):
self.cells = [[0, 1, 0, 0, 0],
[0, 0, 1, 0, 0],
[1, 1, 1, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
def print_cells(self):
for x in self.cells:
print(*x)
def get_around_cells(self,_x,_y):
return [[self.cells[y][x] for x in range(max(_x-1,0),min(_x+2,len(self.cells[0]))) if x != _x or y != _y] for y in range(max(_y-1,0),min(_y+2,len(self.cells)))]
lg = LifeGame()
print(lg.get_around_cells(1,1))
今回は、以下のように出力される。
[[0, 1, 0], [0, 1], [1, 1, 1]]
参考
ライフゲーム - Wikipedia