3

洞窟の特定のセルを、それらがどの部屋にあるかに基づいて異なる色の水で満たす、より大きなコードで使用されるフラッドフィルアルゴリズムを作成する必要があります。

何らかの理由で、再帰アルゴリズムが機能せず、最大再帰深度を超えていると言われ続けますが、その理由はわかりません。

セルごとに移動して、AIR、STONE、またはWATERのいずれであるかを確認し、STONEまたはWATERの場合は何もしないようにします。AIRの場合は、そのセルを埋めてほしい。

誰かが私にいくつかのヒントやアドバイスを与えることができますか?

#flood fill algorithm
def fill(cave, row, col, color):

    caveWidth = len(cave)
    caveHeigth = len(cave[0])


    if row > 0:
        fill(cave, row-1, col, color) #left
    if col > 0:
        fill(cave, row, col-1, color) #up
    if row < caveWidth-1:
        fill(cave, row+1, col, color) #right
    if col < caveHeigth-1:
        fill(cave, row, col+1, color) #down

    if cave[row][col] == STONE or cave[row][col] == WATER:
        return

    if cave[row][col] == AIR : 
        cave[row][col] = WATER
        grid.fill_cell(row, col, color)
4

2 に答える 2

5

ルーチンの開始時にrowとを印刷して、ここで何が問題なのかを確認します。少しコードを並べ替えれば大丈夫です:-)colfill

于 2012-10-19T02:53:19.793 に答える
1

再帰アルゴリズムを使用しないでください。それらは悪魔のおもちゃです。

ウィキペディアには、スキャンライン フィルなどのさまざまな実用的なアルゴリズムがリストされています。

于 2012-10-19T20:02:30.967 に答える