2012-12-12 20 views
8

Ile jest możliwych sposobów na wygenerowanie sudoku? Potrafię wymyślić tylko dwa możliwe sposoby: 1) Rozwiąż zagadkę Sudoku i przetasuj rzędy i kolumny 2) Wygeneruj losową liczbę i sprawdź, czy narusza ona jakiekolwiek ograniczenia Sudoku, powtarzaj, aż liczba nie naruszy żadnego ograniczenia Sudoku dla każdego kwadrat (teoretycznie możliwe, ale normalnie prowadzi do zakleszczenia)Unikalne metody generowania łamigłówki sudoku

Czy są jakieś inne sposoby?

Odpowiedz

21

Here to 20-stronicowy plik PDF, zatytułowana „Tworzenie Sudoku Puzzles: od łatwych do zła”, to by zapewne znaleźć przydatne w swoim dążeniu.

Aby odpowiedzieć na to pytanie:

Czy są jakieś inne sposoby?

Tak. Tak, są.

-2

To działałoby.

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

prosty sposób wygenerować do Weź Solved Sudoko puzzle, krok 1) wymienić wszystkie 1 o, 2 z B do 9 z I Krok 2) zrobić shuffle każdy poziomy i pionowy blok blokowy z użyciem losowego od 1 do 3, w każdym z nich mogą być tylko 3 możliwe kombinacje. krok 3) przetasuj teraz blok, w którym mogą być tylko 3 pionowe i 3 poziome losowanie krok 4) obróć blok od 1 do 4 raz .. krok 5) odbij lustro puzzlem w pionie i poziomie za pomocą losowego od 1 do 2. krok 6) zamień wszystkie A na dowolne liczby od 1 do 9 ..

Zgadnij, że da to około 38 093 690 880 kombinacji ....