4

嘿,我正在尝试使用 Python 中的字典制作图表。我正在使用一个txt包含迷宫的文件(b 表示墙壁 a 表示路径),并且我正在尝试制作一个字典,其中列出了迷宫中所有可能的移动(简单的步骤,而不是完整的路径)。关于我应该从哪里开始的任何想法?我从来没有用过字典。

非常感谢你的帮助,这让我有了一个很好的开始。还有一个问题,我从一个有效的房子开始检查所有可能的路径。在那之后,我不得不搬到另一所房子去检查那里的路径。我怎样才能确保我没有无限循环或重新检查我已经检查过的房子?

4

2 回答 2

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 教程的字典部分

于 2011-01-17T23:58:46.943 回答
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
于 2012-10-21T05:39:19.280 回答