嘿,我正在尝试使用Python中的字典制作图表。我正在使用一个包含迷宫的txt
文件(b代表路径的墙壁),我正在尝试制作一个字典,列出迷宫中所有可能的移动(简单步骤,而不是完整路径) 。关于我应该从哪里开始的任何想法?我从未使用过字典。
非常感谢你的帮助,这让我有了一个良好的开端。还有一个问题,我从一个有效的房子开始,检查所有可能的路径。之后,病人不得不搬到另一所房子,检查那条路。我怎样才能确保我没有得到无限循环或重新检查我已经检查过的房子?
答案 0 :(得分:4)
假设你的迷宫看起来像一个网格,迷宫中的位置可以表示为元组(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教程的dictionaries部分
答案 1 :(得分:1)
非常感谢你的帮助,这让我有了一个良好的开端。只是 还有一个问题,我从一个有效的房子开始检查所有 可能的路径。那病后不得不搬到另一所房子检查 那条路。我怎样才能确保我不会得到无限循环或 重新检查一下我已经检查过的房子了吗?
创建一个“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