Oplossing basis

Deze pagina bevat uitvoerbare code.
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