2012-12-12 10 views
8

Wie viele verschiedene Möglichkeiten gibt es, um ein Sudoku Puzzle zu generieren ?? Ich kann nur an zwei mögliche Wege denken 1) Nimm ein gelöstes Sudoku-Rätsel und mische die Reihen und Spalten 2) Erzeuge eine Zufallszahl und überprüfe, ob es gegen Sudoku-Beschränkungen verstößt, wiederhole bis zur Zahl keine Sudoku-Einschränkung für jeden Quadrat (theoretisch möglich, aber normalerweise führt es zu Deadlocking)Einzigartige Methoden zum Erzeugen von Sudoku Puzzle

Gibt es noch andere Möglichkeiten?

Antwort

21

Here ist eine 20-seitige PDF, mit dem Titel "Sudoku Puzzles Generating: von leicht bis böse", die Sie wahrscheinlich nützlich in Ihrer Suche finden würde.

Um Ihre Frage zu beantworten:

Gibt es andere Möglichkeiten?

Ja. Ja, da sind sie.

-2

Das würde funktionieren.

void genSudokuBoard(int grid[ ], int display[ ]){ 
int i,c, j, rowNum, colNum, blockNum; 

for(c=0; c<N*N; c++) { 
    blockNum = colNum = 1; 
    //rowNum = c/N; 
    //colNum = c % N; 
    //blockNum = (rowNum/3) * 3 + (colNum/3); 
    for (j=0; j<N; j++) 
    printf("%d", grid[((blockNum/3)*N*3) + (colNum/3)*3 + (j/3)*N + j%3]); 
    } 


printf("\n"); 
for(i=0; i<N*N; i++) { /* displaying all N*N numbers in the 'grid' array */ 

    if(i%N==0 && i!=0) { /* printing a newline for every multiple of N */ 
    printf("\n"); 
    } 
    printf("%d ", grid[i]); 
} 
printf("\n"); 

return 0; 

}

-2

einfache Art und Weise ein Gelöst Sudoko Rätsel nehmen zur Erzeugung von bis, Schritt 1) ​​ersetzt all 1 mit A, 2 mit B bis 9 mit I, Schritt 2) tun ein Shuffle in jeder horizontale und vertikale Blockblock der Verwendung eines Zufalls zwischen 1 und 3, hier können jeweils nur 3 mögliche Kombinationen vorliegen. Schritt 3) jetzt mischen den Block es kann nur 3 vertikale und 3 horizontale Shuffle Schritt 4) Drehen Sie den Block 1 bis 4 mal .. Schritt 5) spiegeln Sie das Puzzle vertikal und horizontal mit einer zufälligen zwischen 1 und 2. Schritt 6) Ersetzen Sie alle A durch eine beliebige Zahl von 1 bis 9.

raten wird dies etwa 38.093.690.880 Combos produzieren ....