Il sudoku ha regole semplici, si gioca su una tabella di nove per nove caselle (9×9) in ognuna delle quali si deve inserire una cifra, da uno a nove.
Ogni riga e ogni colonna deve contenere tutte le cifre, da uno a nove, senza ripetizioni.
Ulteriore condizione anche ogni blocco di caselle tre per tre (3×3), contrassegnato da linee più marcate, deve contenere le nove cifre, senza ripetizioni. Il sudoku si presenta con una parte delle cifre già inserite in alcune caselle da un minimo di 20 a un massimo di 35.
Per essere un vero sudoku, deve inoltre avere una soluzione unica.
Ah e naturalmente deve poter essere risolto.
Se ho capito bene quello che ho letto, per avere una soluzione unica sembrerebbe che i numeri minimi da mostrare siano 17 poiché pare sia stato provato che inserendone 16, le soluzioni possibili risulterebbero già 2 e il numero aumenterebbe esponenzialmente diminuendo tale cifra . Normalmente i numeri inseriti nello schema sono da 20 a 35 più basso è il numero delle cifre già inserite più la soluzione del gioco dovrebbe secondo logica essere difficile.
Invero ho anche letto che essendo un gioco di logica e non matematico la difficoltà è data dalla disposizione dei numeri dati e non dalla quantità.
A proposito di disposizione pare che sia stato dimostrato che per avere una soluzione univoca occorre che almeno un valore sia presente all’interno dell’area mostrata nell’immagine allegata.
Queste due caratteristiche, e cioè sopra i 17 valori esposti con almeno uno all’interno dell’area, ci aiutano a escludere parecchi schemi sicuramente non univoci ma non ne garantiscono l’unicità che sembra meglio ottenuta attraverso il metodo dei Dancing Links. Vedi (
https://en.wikipedia.org/wiki/Knuth%27s_Algorithm_X )
Qualcuno conosce l’algoritmo, magari lo ha già tradotto in gambas?
Qui visto che si parte da una griglia completa, vale a dire da un sudoku già compilato forse basta anche meno, ma non mi riesce proprio di capire come posso fare per scoprire se la soluzione data sia l’unica.
Qualcuna ha voglia di cimentarsi in questo rompicapo?
Allego la prima parte del codice di sudoku quella in cui si crea una griglia completa e via via nei vari passaggi commentati nel codice si affina la soluzione per poi passare al mostrare il gioco al giocatore, mentre si stampa la soluzione in console.
Come detto manca ancora l’algoritmo per sapere se la soluzione è unica, manca anche e tutto il resto che qui è solo in parte accennato, siamo solo all’inizio.
Grazie a chiunque voglia dare il proprio parere anche solo al codice già scritto.
La mia matematica è elementare pertanto vogliate scusare le ingenuità... siete i ben venuti a correggerle.