Wypełnienie w Pythonie
Jestem całkowicie nowy w algorytmie Flood Fill. Sprawdziłem to z Wikipedii (http://en.wikipedia.org/wiki/Flood_fill). Ale nie stał się tak mądry. Próbuję go użyć w następującej sytuacji. Mam matrycę:
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"]]
Następnie pozwalam użytkownikowi wybrać jeden punkt z matrycy. Jeśli w tym punkcie jest"b"
nic się nie dzieje. W drugim przypadku, jeśli w danym punkcie jest"a"
Chcę zmienić ten punkt iwszystkie otaczające lub połączone punkty"a"
do „c” za pomocą algorytmu wypełniania powodziowego.
Na przykład załóżmy, że użytkownik decyduje o macierzy [0] [0]. Wtedy nowa matryca byłaby:
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"]]
Kontynuujmy ten przykład i powiedzmy, że użytkownik odrzucił nowy punkt, macierz [3] [1]. Wtedy mielibyśmy:
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"]]
Próbuję zbudować funkcję zalewania funkcji (macierz, x, y) i jak dotąd wymyśliłem to:
def floodfill(matrix, x, y):
if matrix[y][x] == "b":
return matrix
elif matrix[y][x] == ".":
stack = []
Czy masz sposób, aby doprowadzić mnie do kontynuowania? Próbowałem przyjrzeć się tutaj przykładom wypełnienia powodzi SOF, ale wydawało się, że nie pasują do mojej sytuacji. Przynajmniej nie byłem w stanie zastosować tych przykładów do mojego kodu. Wypełnienie nie wydaje się być tym popularnym tematem tutaj ... Ale znowu pomoc byłaby bardzo ceniona!