Diff
checker
文本
文本
图像
文档
Excel
文件夹
Legal
Enterprise
桌面版
定价
登录
下载 Diffchecker 桌面版
比较文本
查找两个文本文件之间的差异
工具
历史
实时编辑器
折叠未更改行
关闭换行
视图
拆分
统一
比对精度
智能
单词
字符
语法高亮
选择语法
忽略
文本转换
转到第一个差异
编辑输入
Diffchecker Desktop
运行Diffchecker最安全的方式。获取Diffchecker桌面应用:您的差异永远不会离开您的电脑!
获取桌面版
MCS 275 2022 worksheet 7 question 3
创建于
4年前
差异永不过期
清除
导出
分享
解释
9 删除
行
总计
删除
字符
总计
删除
要继续使用此功能,请升级到
Diff
checker
Pro
查看价格
34 行
全部复制
25 添加
行
总计
添加
字符
总计
添加
要继续使用此功能,请升级到
Diff
checker
Pro
查看价格
39 行
全部复制
复制
已复制
复制
已复制
def solvemaze
(M,path
=None
):
def solvemaze
_history
(M,path
_list
=None
, solved=False
):
"""
"""
复制
已复制
复制
已复制
Find a solution
to
maze `M`
Functions similarly
to
`solvemaze`, but returns a list of all paths
using a depth-first recursive
considered throughout solving process. Uses additional arg `solved`
search
.
to track whether solution has been found
.
"""
"""
复制
已复制
复制
已复制
print("Called with path={}".format(path))
if path
_list
==None:
if path
==None:
# no path specified, so start
# no path specified, so start
# at M.start
# at M.start
复制
已复制
复制
已复制
path
=
[M.start]
path
_list
=
[
[M.start]
] # Use a list of lists for path_list - one list for each path.
else:
print("Called with path={}".format(path_list[-1]))
path = path_list[-1]
if path[-1]==M.goal:
if path[-1]==M.goal:
# We've found a solution
# We've found a solution
print("SOLVED!")
print("SOLVED!")
复制
已复制
复制
已复制
return path
return path
_list, True # Set the "solved" variable to True
# next steps to consider
# next steps to consider
# (may include retracing our steps)
# (may include retracing our steps)
steps = M.free_neighbors(*path[-1])
steps = M.free_neighbors(*path[-1])
for s in steps:
for s in steps:
if len(path)>=2 and s == path[-2]:
if len(path)>=2 and s == path[-2]:
print("Not considering {}, as it would retrace our steps".format(s))
print("Not considering {}, as it would retrace our steps".format(s))
continue
continue
# Consider whether next step `s` leads to a solution
# Consider whether next step `s` leads to a solution
print("Considering next step {}".format(s))
print("Considering next step {}".format(s))
复制
已复制
复制
已复制
soln
= solvemaze
(M,path
+ [s]
)
next_path = path + [s]
if
soln != None
:
path_list.append(next_path)
soln
, solved
= solvemaze
_history
(M,path
_list
)
if
solved
:
# Some recursive call yielded a solution!
# Some recursive call yielded a solution!
print("Hooray, considering {} worked!".format(s))
print("Hooray, considering {} worked!".format(s))
复制
已复制
复制
已复制
return soln
return soln
, True # # Set the "solved" variable to True
# if we reach this line, step `s` only led to dead ends
# if we reach this line, step `s` only led to dead ends
# if we reach this line, then no continuation of `path`
# if we reach this line, then no continuation of `path`
# leads to a solution, only dead ends.
# leads to a solution, only dead ends.
复制
已复制
复制
已复制
# Still need to return path_list so we can visualize it later
print("Path {} leads only to dead ends".format(path))
print("Path {} leads only to dead ends".format(path))
复制
已复制
复制
已复制
return
None
return
path_list, False # Keep the "solved" variable as False.
已保存差异
原始文本
打开文件
def solvemaze(M,path=None): """ Find a solution to maze `M` using a depth-first recursive search. """ print("Called with path={}".format(path)) if path==None: # no path specified, so start # at M.start path = [M.start] if path[-1]==M.goal: # We've found a solution print("SOLVED!") return path # next steps to consider # (may include retracing our steps) steps = M.free_neighbors(*path[-1]) for s in steps: if len(path)>=2 and s == path[-2]: print("Not considering {}, as it would retrace our steps".format(s)) continue # Consider whether next step `s` leads to a solution print("Considering next step {}".format(s)) soln = solvemaze(M,path + [s]) if soln != None: # Some recursive call yielded a solution! print("Hooray, considering {} worked!".format(s)) return soln # if we reach this line, step `s` only led to dead ends # if we reach this line, then no continuation of `path` # leads to a solution, only dead ends. print("Path {} leads only to dead ends".format(path)) return None
更改后文本
打开文件
def solvemaze_history(M,path_list=None, solved=False): """ Functions similarly to `solvemaze`, but returns a list of all paths considered throughout solving process. Uses additional arg `solved` to track whether solution has been found. """ if path_list==None: # no path specified, so start # at M.start path_list = [[M.start]] # Use a list of lists for path_list - one list for each path. else: print("Called with path={}".format(path_list[-1])) path = path_list[-1] if path[-1]==M.goal: # We've found a solution print("SOLVED!") return path_list, True # Set the "solved" variable to True # next steps to consider # (may include retracing our steps) steps = M.free_neighbors(*path[-1]) for s in steps: if len(path)>=2 and s == path[-2]: print("Not considering {}, as it would retrace our steps".format(s)) continue # Consider whether next step `s` leads to a solution print("Considering next step {}".format(s)) next_path = path + [s] path_list.append(next_path) soln, solved = solvemaze_history(M,path_list) if solved: # Some recursive call yielded a solution! print("Hooray, considering {} worked!".format(s)) return soln, True # # Set the "solved" variable to True # if we reach this line, step `s` only led to dead ends # if we reach this line, then no continuation of `path` # leads to a solution, only dead ends. # Still need to return path_list so we can visualize it later print("Path {} leads only to dead ends".format(path)) return path_list, False # Keep the "solved" variable as False.
查找差异