Python - 深度优先迷宫求解器

标签 python maze

我有一个Python作业,我应该让一个“机器人”从开始到结束,并返回到达目标的路径。我让机器人进行搜索,但我希望列表只显示从开始到结束的路径。现在,pathList 返回所有访问过的方 block 。而且,当到达目标时,它不会停止,只是继续其他节点。 我错过了什么?

def find(labyrinth, robotPos, pathList = []):

    frontier = adjacent_passages(labyrinth, robotPos)   
    pathList.append(robotPos)

    if len(frontier) == 1:
        print("Corner")
        return []

    for i in range(0, len(frontier)):
        if frontier[i] == goal:
            pathList.append(frontier[i])
            return pathList

    for i in range(0, len(frontier)):
        if frontier[i] not in pathList:
            pathList.append(frontier[i])
            if (find(labyrinth, frontier[i], pathList) == []):
                pathList.pop()

    return pathList

最佳答案

我不知道这是否是您问题的答案,但我注意到的第一件事是您不应该使用列表作为默认函数参数 (pathList = []) .

参见"Least Astonishment" and the Mutable Default Argument

关于Python - 深度优先迷宫求解器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13537301/

相关文章:

python - 用python解决迷宫

algorithm - 如何创建一个随机的吃 bean 人迷宫

java - Else 找不到 If 语句,即使有一个

python - 需要帮助确定 pip、内核等的正确文件路径

python - 比较两个数据框中的值

python - timedelta 和两个时间范围

c++ - 在迷宫的 txt 文件中查找特定字符

python - 如何在执行 Dask 任务之间保留一些 Python 对象状态?

python - 在 'while True' 循环中线程化

android - 需要一个非常基本的迷宫算法的建议