ランダム グリッド、ラテン方陣、数独を生成するプログラムに取り組んでいます。私はラテン方陣に取り組んでおり、連続ループにいることを除いて、ほとんどすべてが機能しています。それらを分割すると、正常に動作します。おそらく私が間違っている小さな何かがあり、それを見つけることができません。何が悪いのか分かりますか?
編集:ラテン方陣が何であるかを知らない人のために(誰かが知らない場合)、通常は行にも列にも繰り返しがない9x9グリッドです.
更新: if(notSame) ステートメントの直前に、notSame が true に等しいという問題が見つかりました。常に true に等しいため、行のチェックが終了しませんでした。実行すると、連続ループではなくなりましたが、代わりに行には繰り返しがありませんが、列にはまだ繰り返しがあります。
更新 #2: 列のコーディングの多くをやり直しました。私の教授は私にいくつかのことを変更するように頼みましたが、それでも私は継続的なループに陥っています.
int row = 0, col = 0, count = 0;
bool notSame = true;
// setting up rows and columns
for (row = 0; row < grid.GetLength(0); row++)
{
for (col = 0; col < grid.GetLength(1); col++)
{
grid[row, col] = rnd.Next(1, 10);
//for loop to check rows for repeats
for (int c = 0; c < col; c++)
{
// if there is repeat go back a column and set bool = false
if (grid[row, col] == grid[row, c])
{
col--;
count++;
notSame = false;
break;
}
//notSame = true;
}
// if bool = true loop to check columns for repeats
if (notSame)
{
for (int r = 0; r < row; r++)
{
// if repeat then go back row
if (grid[row, col] == grid[r, col])
{
notSame = false;
count++;
break;
}
}
if (notSame == false && count <= 50)
{
row--;
//break;
}
else if (notSame == false && count > 50)
{
count = 0;
col = 0;
row = 0;
break;
}
}
}
}
グリッドと呼ばれる 2D 配列を使用しています。