私は数独ゲームを始めたばかりで、数独グリッドを作成するにはこの機能をgrid
にしました。私は各セルの異なる番号にrand()
関数を使用しています(現在は、数値の繰り返しのみ行をチェックします)。 rand()
は、各グリッド内の空のセルの乱数にも使用されます。数独グリッドジェネレーター
グリッドが完全で6x6
であり、繰り返し数がない(行のみ)場合がありますが、時には一部のセルでガベージ値が生成され、時には列数が増加することがあります。私はこの問題の原因を理解していませんか?
コード:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void grid(void) {
int cell[6][6], row, col, s, i, j;
char in = 'A';
srand(time(NULL));
for (row = 0; row <= 5; row++) {
printf("\t\t\t[ |");
for (col = 0; col <= 5; col++) {
s = rand() % 6 + 1;
if (s % 2 == 0)
{
cell[row][col] = rand() % 6 + 1;
for (j = 0; j<col; j++) {
if (cell[row][j] == cell[row][col]) {
col--;
continue;
}
}
}
else { printf(" | ", in++); continue; }
printf(" %d | ", cell[row][col]);
}
printf("]\n\n");
}
}
int main()
{
grid();
}
使用しているピコのインデントスタイルはピコの場合は問題ありませんが、Cはピコではありません。正統派のC [インデントスタイル](https://en.wikipedia.org/wiki/Indent_style)を使用してください - 私はオールマンが好きですが、多くの人は1TBSのいくつかの変種を好んでいます。それらのいずれかまたは他のものに固執すれば、間違ったことは起こりません。 –
6x6数独ボードでは、通常、2行3列の6つのサブセルがあり、各行と各列に加えて、各サブセルの6つの数字の一意性を保つ必要があります。あなたのコードは、これらの基準に合致するのに十分ではないようです。 9x9ボードでは、それぞれのサブセルだけでなく各行と列に固有の番号を持つ、3x3のサイズの9つのサブセルがあります。私はあなたが6項目の配列をランダムに並べ替えることでうまくいくかどうか疑問に思いますか? (私は数独ジェネレーターをコード化していません;それを行う最良の方法はわかりませんが、SOタグ付きの[tag:sudoku]には約700の質問があります) –