python - 如何在迷宫中标记解决方案路径:在递归条件中处理“IF”条件“== True”
问题描述
我正在尝试复制这个解决方案: Maze solve with python
我唯一的目标是使用胡萝卜来显示迷宫内解决方案路径的方向。我已经解决了迷宫,但路径由一个字符(2)组成。我想用合适的胡萝卜代替它('>','v','<','^')
我的问题是:
if move(x + 1, y) == True:
因为我将递归函数作为 IF 条件的一部分来调用,所以它会在不确认“== True”条件的情况下不断循环 - 所以它不会返回“True”语句并忽略我的条件以替换为适当的胡萝卜。
如何强制它处理整个 IF 条件,包括“== True”。
示例输出:注意:它在 IF 条件中跳过打印语句(例如:“EAST IS TRUE”)。但是 - 它正在识别 else 语句(“EAST NOT TRUE)。
LOOP START: X: 54 Y: 25
LOOP START: X: 55 Y: 25
LOOP START: X: 56 Y: 25
LOOP START: X: 57 Y: 25
LOOP START: X: 58 Y: 25
LOOP START: X: 59 Y: 25
LOOP START: X: 60 Y: 25
That is wall X: 60 Y: 25
EAST NOT TRUE X: 59 Y: 25
LOOP START: X: 59 Y: 26
LOOP START: X: 60 Y: 26
That is wall X: 60 Y: 26
...etc
我的代码:
def move(x, y):
global FoundWayOut
if FoundWayOut:
return
print('LOOP START: ' + ' X: ' + str(x) + ' Y: ' + str(y))
if (x < 0 or x > width - 1 or y < 0 or y > height - 1):
print('Out of bounds' + ' X: ' + str(x) + ' Y: ' + str(y)); return
if (myMaze[y][x] == 7):
FoundWayOut = True
print('Got it!' + ' X: ' + str(x) + ' Y: ' + str(y)); return
if (myMaze[y][x] == 1):
print('That is wall' + ' X: ' + str(x) + ' Y: ' + str(y)); return
if (myMaze[y][x] == 2):
print('Was here before' + ' X: ' + str(x) + ' Y: ' + str(y)); return
myMaze[y][x] = 2
if move(x + 1, y):
myMaze[y][x] = ">"
print("EAST IS TRUE")
else:
print("EAST NOT TRUE" + " X: " + str(x) + " Y: " + str(y))
if move(x, y + 1):
myMaze[y][x] = "v"
print("SOUTH IS TRUE")
else:
print("SOUTH NOT TRUE" + " X: " + str(x) + " Y: " + str(y))
if move(x - 1, y):
myMaze[y][x] = "<"
print("WEST IS TRUE")
else:
print("WEST NOT TRUE" + " X: " + str(x) + " Y: " + str(y))
if move(x, y - 1):
myMaze[y][x] = "^"
print("NORTH IS TRUE")
else:
print("NORTH NOT TRUE" + " X: " + str(x) + " Y: " + str(y))
如果条件为真,我期望的结果是字符被替换。
解决方案
推荐阅读
- reactjs - useEffect 被调用两次 React JS
- javascript - 服务工作者不删除旧缓存
- java - 如何从 Spring Webflux FilePart DataBuffer 中逐行读取
- php - 返回两种类型之一的对象
- python - Pandas to_datetime 格式什么都不做 - python
- android - 尝试使用 DLLImport 从 Xamarin Android 项目加载 C++ 库时出现异常
- image - 如何将 DynamicImage 转换为 ImageBuffer?
- ruby-on-rails - 有没有办法使用 searchkick gem 使用弹性搜索折叠功能
- sql - TSQLT 断言存储过程列名
- python - python中的密码生成程序