Python: почему мои дети не создают детей?
Вот код: (из MAIN файла)
def BestFirstSearch(startingBoard):
Q = [startingBoard]
Visited = []
while (len(Q) != 0):
Q.sort()
currentQ = Q.pop(0)
Visited.append(currentQ)
# print(currentQ)
if (currentQ.Board == currentQ.GOAL):
return True
currentQ.createChildrenBoards()
for items in currentQ.Children:
if items not in Visited:
Q.append(items)
print(len(Q))
print(currentQ)
return False
(из файла CLASS):
def createChildrenBoards(self):
""" Creates the set of potential children Boards from the current Board """
row = self.X
col = self.Y
assert( (row >=0 and row < BoardClass.N)
and
(col >=0 and col < BoardClass.N) )
newChildrenBoards = []
#print(self.Board[row][col])
# UP(NORTH): slide empty (0) space up
if ( row != 0 ):
newChildBoard = self.copyCTOR()
newChildBoard.Parent = self
newChildBoard.X = row-1
newChildBoard.Y = col
holdCell = newChildBoard.Board[newChildBoard.X][newChildBoard.Y]
newChildBoard.Board[newChildBoard.X][newChildBoard.Y] = 0
newChildBoard.Board[row][col] = holdCell
newChildrenBoards.append(newChildBoard)
for puzzle in newChildrenBoards:
puzzle.computeDistanceFromGoal()
self.Children = newChildrenBoards
Вот части кода, с которыми я работаю. Я инициализировал начальную доску в классе, который создает головоломку. Затем в моем основном я бы вызвал функцию создания дочерних элементов, которая создает список дочерних элементов на основе того, куда вы можете переместить ноль (север является примером того, как я переместил бы 0). Головоломка выглядит следующим образом: Цель = [[0, 1, 2], [3, 4, 5], [6, 7, 8]] Головоломка = [[3, 1, 2], [4, 7, 5]. ], [6, 8, 0] ]
Я не понимаю, почему очередь не добавит больше дочерних элементов из дочерних элементов, созданных на стартовой доске. Я надеюсь, что смогу получить отзывы, которые помогут мне понять, почему мой цикл не регистрирует «внуков». Спасибо!