queue.append(QueueElem(ng, np))

        queue.remove(temp)
        cnt += 1

    return []


if __name__ == "__main__":
    # 解过河问题,并输出步骤
    print("------------")
    print("Solution for 过河问题")
    question = Reader.questionToGraph(
        "examples/cross_river/instances/question.json")
    rules = Reader.rulesToRules("examples/cross_river/rules.json")
    goal = Reader.goalToRule("examples/cross_river/goal.json")  # goal其实是一个rule
    (goalGraph, path) = bfs(question, rules, goal)

    if len(path) > 0:
        print("rules applied are (in order):")
        for i in path:
            print(rules[i].name)  # 输出transform的步骤(依次应用了哪些规则)

    # 解推箱子,并输出步骤
    print("------------")
    print("Solution for 推箱子")
    question = Reader.questionToGraph(
        "examples/sokoban_game/instances/trivial.json")
    rules = Reader.rulesToRules("examples/sokoban_game/rules.json")
    goal = Reader.goalToRule("examples/sokoban_game/goal.json")
    (goalGraph, path) = bfs(question, rules, goal)