Ich habe gerade angefangen, mein Sudoku-Spiel zu machen, und ich habe diese Funktion grid
zum Erstellen eines 6x6
Sudoku-Grid gemacht. Ich habe die rand()
Funktion für verschiedene Zahlen in jeder Zelle benutzt (zZ prüft es nur Zeilen für Wiederholung von Zahlen). rand()
wird auch für Zufallszahlen von leeren Zellen in jedem Raster verwendet.Sudoku Grid Generator
Das Problem ist, dass manchmal das Gitter ist perfekt 6x6
und ohne Wiederholung einer Zahl (nur in Zeilen), aber manchmal in einigen Zellen sind Müll-Werte generiert und manchmal die Anzahl der Spalten erhöht. Ich verstehe nicht, was das Problem verursacht.
Der Code:
#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();
}
Die Pico-Einrückung, die Sie verwenden, kann für Pico in Ordnung sein, aber C ist nicht Pico. Bitte verwenden Sie einen orthodoxen C [Einrückungsstil] (https://en.wikipedia.org/wiki/Indent_style) - Ich bevorzuge Allman, aber viele Leute bevorzugen eine Variante von 1TBS. Bleiben Sie bei dem einen oder anderen und Sie werden nicht viel falsch machen. –
In einer 6x6 Sudoku-Karte haben Sie normalerweise 6 Unterzellen mit 2 Reihen und 3 Spalten, und Sie müssen die Eindeutigkeit der 6 Zahlen in jeder Unterzelle sowie in jeder Zeile und jeder Spalte beibehalten. Dein Code scheint nicht genug zu tun, um diese Kriterien zu erfüllen. In einer 9x9-Karte hätten Sie 9 Subzellen mit einer Größe von 3x3, wobei die Zahlen in jeder Unterzelle sowie in jeder Zeile und Spalte eindeutig sind. Ich frage mich, ob du es besser machen würdest, wenn du zufällig eine Reihe von 6 Gegenständen permutierst? (Ich habe keinen Sudoku-Generator programmiert; ich weiß nicht, wie es am besten geht. Aber es gibt fast 700 Fragen zu SO-Tags [tag: sudoku]!) –