def count_neighbors(board, row, col):
total = 0
for drow in [-1, 0, 1]:
for dcol in [-1, 0, 1]:
if not (drow == 0 and dcol == 0):
r, c = row + drow, col + dcol
if 0 <= r < len(board) and 0 <= c < len(board[0]):
total = total + board[r][c]
return total
def next_cell(board, row, col):
buren = count_neighbors(board, row, col)
if board[row][col] == 1 and buren in [2, 3]:
return 1
if board[row][col] == 0 and buren == 3:
return 1
return 0
def copy_board(board):
result = []
for row in board:
result = result + [row[:]]
return result
def next_generation(board):
result = copy_board(board)
for row in range(len(board)):
for col in range(len(board[0])):
result[row][col] = next_cell(board, row, col)
return result
def generaties(board, aantal):
huidig = board
for _ in range(aantal):
huidig = next_generation(huidig)
return huidig
bord = [[0,0,0,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,0,0,0]]
verwacht = [[0,0,0,0,0],[0,0,0,0,0],[0,1,1,1,0],[0,0,0,0,0],[0,0,0,0,0]]
assert count_neighbors([[1,1,0],[0,0,1],[0,0,0]], 0, 0) == 1
assert next_generation(bord) == verwacht
assert bord == [[0,0,0,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,0,0,0]]
assert generaties(bord, 2) == bord