次のような配列を作成しました。
int[,] grid = new int[9, 9];
Random randomNumber = new Random();
var rowLength = grid.GetLength(0);
var colLength = grid.GetLength(1);
for (int row = 0; row < rowLength; row++)
{
for (int col = 0; col < colLength; col++)
{
grid[row, col] = randomNumber.Next(6);
}
}
これにより、乱数で満たされた 9x9 の 2 次元配列が生成されます。例:
5 5 0 0 4 3 3 4 5
2 0 5 5 2 1 2 0 4
4 0 2 0 2 4 3 5 4
0 3 4 3 1 2 4 1 1
5 4 1 3 3 0 4 3 4
0 2 3 3 1 2 0 1 5
2 4 3 1 2 5 4 3 1
0 4 5 3 1 1 0 3 1
2 1 2 2 2 4 0 3 2
ここで本当の質問が来ます: ゼロを「消す」にはどうすればよいですか (ゼロはその上の値に置き換えられるか、ゼロは上に移動します)。明らかに、一番上の行のゼロにはその上に値がないため、新しい乱数を作成する必要があります。また、今回は randomNumber.Next(6)+1 はオプションではありません。私はこれを試しましたが、役に立ちません:
foreach(int z in grid)
{
if(z==0)
{
if(col>0)
{
int a=grid[col,row];
int b=grid[col-1,row];
a=b;
b=a;
}
else
{
int a = grid[col, row];
Random randomNumber= new Random();
a = randomNumber.Next(6) + 1;
}
}
}
編集: 3x3 の例: 初期グリッド:
1 3 5
0 5 3
3 4 0
後:
R3R
1 5 5
3 4 3
R=0 ではない新しい乱数