2012-12-12 22 views
8

Quanti modi unici possibili ci sono per generare un puzzle di Sudoku ?? 1) Esegui un puzzle Sudoku risolto e mischia le righe e le colonne 2) Genera un numero casuale e controlla se viola i vincoli Sudoku, ripeti fino a quando non violi alcun vincolo Sudoku per ogni quadrato (teoricamente possibile ma normalmente porta a deadlocking)Metodi unici per generare puzzle di sudoku

Ci sono altri modi?

risposta

21

Here è un PDF di 20 pagine, intitolato "Sudoku Puzzles Generating: from Easy to Evil", che probabilmente troverai utile nella tua ricerca.

Per rispondere alla tua domanda:

ci sono altri modi?

Sì. Si ci sono.

-2

Questo funzionerebbe.

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

modo semplice di generare fino a prendere un puzzle Sudoko Risolto, fase 1) Sostituire tutti 1 con A, 2 in B fino a 9 con I, Punto 2) fare un riordino in ogni blocco di blocco orizzontale e verticale di utilizzare un casuale tra 1 e 3, qui in ciascuna ci possono essere solo 3 combinazioni possibili. passaggio 3) ora mescola il blocco ci possono essere solo 3 verticali e 3 orizzontali shuffle passaggio 4) ruotare il blocco da 1 a 4 volte .. passaggio 5) rispecchiare il puzzle verticalmente e orizzontalmente utilizzando un casuale compreso tra 1 e 2. passaggio 6) sostituisci tutto A con qualsiasi numero da 1 a 9 ..

indovinando questo produrrà circa 38.093.690.880 combinazioni ....