Uitwerking extra¶
def copy_board(board):
"""Geeft een kopie van het bord terug met voor elke rij een nieuwe lijst."""
result = []
for row in board:
result = result + [row[:]]
return result
def count_neighbors(board, row, col):
"""Geeft het aantal levende buren van de cel op rij row en kolom col."""
count = 0
for i in range(max(0, row - 1), min(len(board), row + 2)):
for j in range(max(0, col - 1), min(len(board[0]), col + 2)):
if i != row or j != col:
count = count + board[i][j]
return count
def next_cell(board, row, col):
"""Geeft de waarde van de cel op rij row en kolom col in de volgende generatie."""
neighbors = count_neighbors(board, row, col)
if neighbors == 3:
return 1
if board[row][col] == 1 and neighbors == 2:
return 1
return 0
def next_generation(board):
"""Geeft de volgende generatie van het bord terug; board zelf blijft ongewijzigd."""
result = copy_board(board)
for r in range(len(board)):
for c in range(len(board[0])):
result[r][c] = next_cell(board, r, c)
return result
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],
]
origineel = copy_board(bord)
assert count_neighbors([[1, 1, 0], [0, 0, 1], [0, 0, 0]], 0, 0) == 1
assert next_generation(bord) == [
[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 bord == origineel