2

こんにちは、波形アルゴリズムを使用して、python で迷路を解くプログラムを作成しようとしています (ここで説明します)。ネストされたループを使用してマトリックスをループし、このアニメーション gif のように数値を変更しています。

ただし、マトリックスの最初の行をループしているだけで、残りの行には移動していないようです。私はかなり長い間このことを見つめてきましたが、新しい目を向けることが助けになることを願っています.

ありがとう、ローガン

floorMap = [[000,000,000,000,000,999,999,999,999,999],
           [000,000,999,000,999,000,000,000,999,999],
           [000,000,999,000,999,000,000,000,999,999],
           [000,000,000,000,999,000,000,000,999,999],
           [999,000,000,000,999,000,999,999,999,999],
           [999,000,000,000,000,000,999,000,000,999],
           [999,000,000,000,999,999,999,000,000,999],
           [999,000,999,000,000,000,999,000,000,999],
           [999,000,999,999,999,000,000,000,000,999],
           [999,999,999,999,999,999,999,999,000,000]]
robotX=0
robotY=0

goalX=9
goalY=9

currentNum=0

wall=999
uncalculated=000

floorMap[robotX][robotY]=1


def changeSurroundings(X, Y):
    #left
    if(floorMap[X-1][Y]==000):
        floorMap[X-1][Y]=currentNum   
    #right 
    if(floorMap[X+1][Y]==000):
        floorMap[X+1][Y]=currentNum  
    #up
    if(floorMap[X][Y-1]==000):
        floorMap[X][Y-1]=currentNum  
    #down
    if(floorMap[X][Y+1]==000):
        floorMap[X][Y+1]=currentNum    

def printMap():
    i=0
    while(i<len(floorMap)):
        print floorMap[i]
        print ""
        i+=1
    print ""
    print ""



#------------------THIS IS WHERE THE PROBLEM IS--------------

while(floorMap[goalX][goalY]==0):
    x=0
    y=0
    while(x<len(floorMap[0])):
        while(y<len(floorMap)):
            if(floorMap[x][y] > 000 and floorMap[x][y] < 999):
                currentNum=floorMap[x][y]+1
                changeSurroundings(x,y)
                printMap()

            y+=1
        x+=1
4

1 に答える 1

2
x=0
y=0
while(x<len(floorMap[0])):
    while(y<len(floorMap)):
        ...
        y+=1
    x+=1

ここでの問題は、内側のループが値を使い果たすと、内側のループごとにyリセットしないため、外側のループが完了するまで使い果たされることです。y

y=0行を外側のループに移動するだけです。

x=0
while(x<len(floorMap[0])):
    y=0
    while(y<len(floorMap)):
        ...
        y+=1
    x+=1
于 2013-12-16T09:01:10.130 に答える