Наводнение в Python
m совершенно новый для алгоритма Flood Fill. Я проверил это из Википедии (http://en.wikipedia.org/wiki/Flood_fill). Но нестало намного мудрее. Я'Я пытаюсь использовать его в следующей ситуации. У меня есть матрица:
matrix = [["a", "a", "b", "a", "a", "b"],
["a", "b", "b", "a", "b", "b"],
["b", "a", "b", "a", "a", "b"],
["b", "a", "b", "a", "b", "b"],
["a", "a", "b", "a", "a", "a"],
["a", "b", "b", "a", "a", "b"]]
Затем я позволяю пользователю выбрать одну точку из матрицы. Если в данной точке"b"
ничего не сделано В другом случае, если в данном пункте есть"a"
Я хочу изменить эту точку зрения ивсе окружающие или связанные точки с"a"
в "с" с помощью алгоритма заливки.
Например, пустьНапример, пользователь решает матрицу [0] [0]. Тогда новая матрица будет:
matrix = [["c", "c", "b", "a", "a", "b"],
["c", "b", "b", "a", "b", "b"],
["b", "a", "b", "a", "a", "b"],
["b", "a", "b", "a", "b", "b"],
["a", "a", "b", "a", "a", "a"],
["a", "b", "b", "a", "a", "b"]]
Позволять'Продолжаем этот пример и говорим, что пользователь установил новую точку, матрица [3] [1]. Тогда бы мы имели:
matrix = [["c", "c", "b", "a", "a", "b"],
["c", "b", "b", "a", "b", "b"],
["b", "c", "b", "a", "a", "b"],
["b", "c", "b", "a", "b", "b"],
["c", "c", "b", "a", "a", "a"],
["c", "b", "b", "a", "a", "b"]]
Я пытаюсь построить функцию заливки (matrix, x, y), и до сих пор я придумал это:
def floodfill(matrix, x, y):
if matrix[y][x] == "b":
return matrix
elif matrix[y][x] == ".":
stack = []
У вас есть способ заставить меня продолжить? Пытался посмотреть примеры заливки на SOF, но они, похоже, не соответствовали моей ситуации. По крайней мере, я не былЯ не могу применить эти примеры к моему коду. Наводнение, кажется, не является такой популярной темой здесь ... Но, опять же, помощь будет высоко ценится!