0

注: 不正なコードが先にあります。あなたは警告されました。

このコードは、数独パズルのすべての 3x3 正方形のすべての要素を反復処理します。以下に示す方法は、各正方形の左上要素の座標を取得し、その正方形の各要素を反復処理する方法です。これは、正しいインデックスにアクセスするだけで合計 4 つの "for" ループが必要になり、次に正しいアクションを実行するために別の "for" ループが必要になることを意味します。

このコードは (撤回されたコードが挿入されていれば) 機能しますが、見た目が非常に乱雑で非常に読みにくいものです。これらのネストされた「for」ループを排除するより良い方法はありますか?

前もって感謝します。

void Sudoku::updateSquares(int grid[9][9], int possibleSolutions[9][9][10])
{
    for (int i = 0; i < 9; i += 3)
    {
        for (int j = 0; j < 9; j += 3)      //for every square:
        {
                            //Other code
                            //...
                            //Other code

            //updates the possibleSolutions array
            for (int k = 0; k < 3; k++)
            {
                for (int l = 0; l < 3; l++)    //for every element in every square:
                {
                    if(grid[i+k][j+l] != 0)
                        continue;
                    for (int n = 0; n < 10; n++)
                    {
                        if(possibleSolutions[i+k][j+l][n] != 0 && numbers[n] == 0)
                        {
                            possibleSolutions[i+k][j+l][n] = 0;
                            possibleSolutions[i+k][j+l][0] -= 1;  //reduce the size, which is held in [][][0]
                        }
                    }
                }
            }

        }
    }
}
4

1 に答える 1