私はpythonで迷路のソルバーを作るのに疲れを感じませんでした。私は友達、インターネット、スタックなどのすべてのリソースを使いました。私は前に私のコードをスタック質問から多くのものに適応させましたが、完全にコードをコピーするとき(私はやりたくない)でも答えには出られません。Pythonで迷路を解決する
迷路/入力ファイル(ネストされたリスト):
[['*', '*', '*', '*', '*'],
['*', ' ', '*', ' ', '*'],
['*', ' ', ' ', ' ', '*'],
['*', ' ', '*', ' ', 'E'],
['*', 'S', '*', '*', '*']]
この関数は、迷路内の同じポイントをループし続けます。私の開始点「S」を出力し、(4,1)である:
(4,1)
(4,0)
(3,1)
上記の出力は、私が機能をデバッグするために使用print文からです。
already_visited=[]
def solve(x,y):
global already_visited
matrix = draw(load())
print (x,y)
#base cases
if matrix[x][y] == "E":
for row in matrix:
row = str(row)[1:-1]
print row
return True
if matrix[x][y] == "*":
return False
if matrix[x][y] == "x":
return False
matrix[x][y] = "x"
#---------------------
if (x,y) in already_visited: #check if we have already been here
return False
already_visited.append((x,y)) #add position to list
#---------------------
# recursive cases (matrix traversal)
if (x < len(matrix)-1 and solve1(x+1,y)):
return True
elif (y > 0 and solve1(x,y-1)):
return True
elif (x > 0 and solve1(x-1,y)):
return True
elif (y < len(matrix)-1 and solve1(x,y+1)):
return True
else:
return False
迷路に見られるように、私はx
とy
のための機能に入るのですすべては、S、インデックスを開始している:それは私の機能を解決するための再帰的limit.Belowがさ当たるまで、それはちょうどそのために、上記を印刷します上記の投稿。どんな助けもありがとうございます!
でインデックスエラーを返す[なぜ文句を言わない迷路のソルバーコードワーク](http://stackoverflow.com/questions/35545291/why-wont-maze-solver-code-work) –
」の可能性のある重複"E"のチェックを含むif文は、 'x <0またはy <0'をチェックしなかったためかもしれません。あなたはその投稿で私の答えを見ることができます –
'draw()'は何をしますか? – tynn