2011-01-17 5 views
4

ねえ、私はPythonで辞書を使ってグラフを作ろうとしています。私はtxtファイルを使用して迷路(パスのための壁のためのb)を使用しています、そして、私は迷路(単純なステップ、完全なパスではない)で取るためにすべての可能な動きをリストする辞書を作ろうとしています。私はどこから始めるべきですか?私は辞書で働いたことはありません。Pythonで迷路のグラフを作成する

本当にありがとうございました。素晴らしいスタートを切ってくれました。ちょうどもう1つの質問、私は1つの有効な家から始まり、すべての可能な経路をチェックしています。その後、病気は別の家に移動し、その上のパスを確認する必要があります。どのように私は無限ループを取得しないか、家のiveが既にチェックされているかどうかを再確認することができますか?

+0

質問ごとに1つ質問してください。すでに回答が投稿された後、新しい質問を追加するように質問を編集するのは面倒です。 –

答えて

4

迷路がグリッドのように見える場合、迷路内の位置はタプル(行、列)として表すことができます。あなたが辞書を構築するとき、迷路内のすべての位置のエントリを作成すると、初期値は空のリストになります。あなたが(r-1、c)、(r、c-1)、(r + 1、c)、(r、c + 1)に到達できるかどうかを調べる。 1)。可能であれば、そのタプルをリストに追加します。それでは、私から(R-1、C)および(R、C + 1)に得ることができることを言わせて(R、C)、辞書のエントリは空を作成するには

maze_dict[(r,c)] = [(r-1,c), (r,c+1)] 

ようになります。辞書は、あなたが使用したい:

maze_dict = {} 

をまた、Pythonのチュートリアル

+0

dictonariesについての簡単な質問は、可能な方法のリストを入手して、辞書に追加できますか?私はキーの値を "追加"できませんか? – Daymor

+0

可能な方法のリストが表示されたら、それらを反復的に辞書に追加できます。辞書では、ハッシュを破るため、キーの値を変更することはできません。 – seggy

+0

Daymor:キーと値のペアを辞書に書き込むだけです。あなたは好きなだけ多くのものを入れることができます。 –

1

dictionariesセクションを見てみなければならない素晴らしいスタートに私を降りたこと、あなたが助けるためにそんなにありがとう。ちょうど もう1つ質問がありますが、私は1つの有効な家で始まり、すべて の可能なパスをチェックしています。その後、別の家に移動して、その上の道を にチェックしなければなりません。どのように私は無限ループを取得しないようにするか、または 家屋のチェックをもう一度チェックしますか?各家の中を行く、今

houses = [House((1,3)), House((3,3)), House((4,3))] # a list of houses 

、およびそのパス(複数可)caculate:

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 

は、いくつかの家を作成します。

そのグリッド座標で、 "ハウス" クラスを作成します。

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 

リストをステップすると、e 1回だけ家に帰る。今すぐあなたは到達不能な家を見つけることができます:

for i in houses: 
    if not i.paths: 
     print "I did not find a way to reach the house at ",i.pos 
関連する問題