Наполнение, чтобы получить доступные клетки - PullRequest
0 голосов
/ 22 декабря 2018

Я пытаюсь реализовать алгоритм заливки, чтобы найти все доступные для моего робота ячейки в сетке.(0 означает доступность, 1 означает занятость).Мой ввод - это сетка (матрица), которую не нужно возводить в квадрат, и координаты x и y, с которых я запускаю алгоритм заливки.У меня вопрос: я пытаюсь инициализировать набор, в котором я собираю только достижимые ячейки, но по какой-то причине я получаю эту ошибку: я получаю только ячейку (0,0) в своем наборе достижимых.

и еще одна вещь, я хочу потерять отметку 2, которую я делаю, когда я заполняю, но могу ли я это сделать?Или это повредит моему алгоритму?

Вот мой код: (Он будет работать, если я уберу все строки с "достижимым", но это не то, что я хочу).

def floodfill(matrix, x, y):
    reachable = set()

    if matrix[x][y] == 0:
        matrix[x][y] = 2
        reachable.add((x, y))

        if x > 0:
            floodfill(matrix,x-1,y)
        if x < len(matrix) - 1:
            floodfill(matrix,x+1,y)
        if y > 0:
            floodfill(matrix,x,y-1)
        if y < len(matrix[0]) - 1:
            floodfill(matrix,x,y+1)
    return reachable
...