Generatore di Sudoku casuale


13

Voglio generare un Sudoku completamente casuale .

Definisci una griglia di Sudoku come una griglia di numeri interi tra 1 e 9 in cui alcuni elementi possono essere omessi. Una griglia è un puzzle valido se esiste un modo unico per completarla per abbinare i vincoli del Sudoku (ogni linea, colonna e quadrato 3 × 3 allineati non ha elementi ripetuti) ed è minimo a tale riguardo (cioè se ometti più elemento il puzzle ha più soluzioni).9×9193×3

Come posso generare un puzzle di Sudoku casuale, in modo tale che tutti i puzzle di Sudoku siano equipaggiabili?


Sembra una soluzione praticabile: dryicons.com/blog/2009/08/14/…
Joe

1
Ora c'è una meta domanda al riguardo. Si prega di discutere lì o in chat.
Kevin

Risposte:


15

In questo modo puoi generare l' esatta distribuzione uniforme di tutti i puzzle di sudoku: puoi semplicemente generare una griglia 9x9 in modo casuale e poi mantenerla solo se è una griglia di sudoku corretta, altrimenti riprova.

917

[1,2,..9]9!

Forse vedi dove sto andando: rispondere a questo problema in modo intelligente probabilmente ti porterà a chiederti quali siano le simmetrie sottostanti alle griglie del sudoku. Molto lavoro è stato fatto in questa direzione per dimostrare il fatto che 17 è il numero minimo di indizi su un sudoku ( vedi questo articolo ) e puoi andare qui per vedere questa enumerazione precisa di 5.472.730.538 classi di 3.359.232 griglie simili, che usa questi simmetrie:

  1. Permutazioni di cifre
  2. Permutazioni di righe (le bande e le righe all'interno di ciascuna banda)
  3. Stessa cosa per le colonne
  4. Recepimento

9!,64,64,2

MODIFICA: per adattarlo a puzzle incompleti, puoi scegliere casualmente un sottoinsieme della tua griglia, controllare se la soluzione è unica con un solutore di sudoku e riprovare in caso contrario. Questa non è una distribuzione uniforme poiché il numero di puzzle incompleti con una soluzione unica può essere diverso per due griglie. (Sarei molto sorpreso altrimenti)


Ma Justin sta chiedendo un modo per generare un puzzle incompleto in modo che esista un modo unico di completarlo. Anche se generi una griglia 9x9 che soddisfa i vincoli di Sudoku, non è chiaro perché la rimozione di un sottoinsieme specifico delle celle ti darebbe un puzzle che può essere completato in un modo unico.
Janoma

1
@ Janoma: oh, mio ​​male, lo modificherò. Ma non è molto significativo se non si definisce cosa sia un puzzle adeguato. (Una griglia con una sola cella vuota è un puzzle?). Vogliamo una griglia minima, (cioè se rimuovi una cifra la soluzione non è più unica?) Questa è una domanda interessante.
jmad

"Alcuni elementi possono essere omessi" è abbastanza preciso (vale a dire che "uno o più" elementi possono essere rimossi). Ad esempio, un puzzle valido con una cella vuota può essere completato in un modo unico, mentre un puzzle vuoto non può, poiché esiste più di un puzzle valido. Inoltre, un puzzle valido completato può essere completato in un modo unico (banale, vuoto). Anche la domanda sulla griglia minima è interessante, ma diversa da questa.
Janoma

@Janoma, jmad: un puzzle valido è normalmente minimo, ho dimenticato di menzionarlo.
Gilles 'SO- smetti di essere malvagio'

@Gilles È una definizione? Mi chiedo se questo sia davvero il significato previsto del PO. Rende il problema molto più difficile :-)
Janoma
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.