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] ]

Я не понимаю, почему очередь не добавит больше дочерних элементов из дочерних элементов, созданных на стартовой доске. Я надеюсь, что смогу получить отзывы, которые помогут мне понять, почему мой цикл не регистрирует «внуков». Спасибо!

0 ответов

Другие вопросы по тегам