嘿,我正在尝试使用 Python 中的字典制作图表。我正在使用一个txt
包含迷宫的文件(b 表示墙壁 a 表示路径),并且我正在尝试制作一个字典,其中列出了迷宫中所有可能的移动(简单的步骤,而不是完整的路径)。关于我应该从哪里开始的任何想法?我从来没有用过字典。
非常感谢你的帮助,这让我有了一个很好的开始。还有一个问题,我从一个有效的房子开始检查所有可能的路径。在那之后,我不得不搬到另一所房子去检查那里的路径。我怎样才能确保我没有无限循环或重新检查我已经检查过的房子?
嘿,我正在尝试使用 Python 中的字典制作图表。我正在使用一个txt
包含迷宫的文件(b 表示墙壁 a 表示路径),并且我正在尝试制作一个字典,其中列出了迷宫中所有可能的移动(简单的步骤,而不是完整的路径)。关于我应该从哪里开始的任何想法?我从来没有用过字典。
非常感谢你的帮助,这让我有了一个很好的开始。还有一个问题,我从一个有效的房子开始检查所有可能的路径。在那之后,我不得不搬到另一所房子去检查那里的路径。我怎样才能确保我没有无限循环或重新检查我已经检查过的房子?
假设你的迷宫看起来像一个网格,迷宫中的一个位置可以表示为一个元组 (row,col)。构建字典时,为迷宫中的每个位置创建一个条目,初始值为空列表。在迷宫中的每个有效位置 (r,c),确定是否可以到达 (r-1,c)、(r,c-1)、(r+1,c) 和 (r,c+ 1)。如果可以,则将该元组添加到列表中。所以,假设我可以从 (r,c) 到 (r-1,c) 和 (r,c+1),字典中的条目看起来像
maze_dict[(r,c)] = [(r-1,c), (r,c+1)]
要创建一个空字典,您可以使用:
maze_dict = {}
您还应该查看 python 教程的字典部分
非常感谢你的帮助,这让我有了一个很好的开始。还有一个问题,我从一个有效的房子开始检查所有可能的路径。在那之后,我不得不搬到另一所房子去检查那里的路径。我怎样才能确保我没有无限循环或重新检查我已经检查过的房子?
创建一个 "House" 类,它的网格坐标:
class House(object):
def __init__(self, pos):
self.pos = pos # the coordinates (position) on the grid, a tuple
self.paths = [] # Empty array to hold paths
创建一些房屋:
houses = [House((1,3)), House((3,3)), House((4,3))] # a list of houses
现在,穿过每个房子,计算它的路径
paths = {}
paths[(1,3)] = [(2,3), (4,3) ... ] # possible paths to the point (1,3)
for i in houses:
try:
i.paths = paths[(i.pos)]
except KeyError:
print "I don't know how to get to ", i.pos
逐步浏览列表可确保您只检查每所房子一次。现在您可以找出无法到达的房屋:
for i in houses:
if not i.paths:
print "I did not find a way to reach the house at ",i.pos