il SudokuUn Sudoku è una griglia di 9x9
celle in ognuna delle quali si dovrà scrivere un numero, da 1 a 9. La griglia è a sua volta divisa in 9
riquadri di 3x3 celle. Soluzione del GiocoIn prima battuta si cercano le celle in cui inserire con certezza un valore: ogni valore inserito esclude copie di se stesso sulla riga, sulla colonna e nel riquadro di appartenenza; quindi cercheremo celle in cui è possibile inserire un solo valore, oppure valori che su una riga o su una colonna o in un riquadro hanno una sola possibilità di accoglienza.In questo modo viene trovata la soluzione degli schemi di difficoltà media. In alcuni
casi occorre procedere "per tentativi": in una cella vuota viene
inserito un valore possibile, procedendo con le conseguenze
"certe" e poi con un'altra ipotesi in un'altra casella vuota;
quando si giunge a un punto di incongruenza, si fa marcia indietro. Struttura datiLa tavola di gioco è allocata in una matrice 9x9. Ogni cella della matrice è in realtà un array di 10 caselle, dove la casella 0 indica se la cella è libera (0) o occupata (1..9), mentre le nove caselle successive indicano ciascuna la possibilità di inserire nella cella il valore corrispondente (Flag 1=inserimento possibile). La matrice è dunque tridimensionale.
AlgoritmoLo schema da completare viene caricato dal file SUDOKU.TXT
nella stessa cartella dove risiede l'eseguibile; vengono esaminati solo i primi 9 records del file e, di questi,
solo i primi 9 caratteri: il resto del file può essere occupato da commenti.
Tutti i caratteri diversi da 1,2,3,4,5,6,7,8 e 9, sono considerati Spazi.
Ogni inserimento può creare nuove certezze, quindi
l'operazione viene ripetuta finché è possibile inserire numeri sicuri. Codice Sorgente in CIl programma sorgente è per Visual C++ in modalità console, ma può essere rapidamente adattato ad altri compilatori; è possibile scaricare l'eseguibile di 36 Kb. Considerazioni finali
Il gioco si è rivelato deludente dal punto di vista della complessità
computazionale per un computer; tutti gli schemi, anche quelli catalogati "diabolici", vengono
risolti da un Athlon 2600 in pochi decimi di secondo! |