G & G

Solutore di sudoku

« Older   Newer »
 
  Share  
.
  1. ingggiaco
     
    .

    User deleted


    Ecco un mio programmino fatto per risolvere qualsiasi sudoku di qualsiasi difficoltà e dimensione.
    Per compilare l'eseguibile è stato utilizzato il linguaggio fotran.
    In questa versione i risultati vengono offerti soltanto sulla finestra ms-dos, mentre la matrice deve essere inserita in un file txt completa di numeri e caselle vuote (indicate con zero), così come visibile nel file zip.
    Il file eseguibile deve essere lanciato nella stessa directory del file matrice.txt.

    Download eseguibileda dropbox
    Virustotal

    All'esecuzione si deve indicare la dimensione della matrice sudoku.: 3x3, 4x4, 5x5...
    Es: se la matrice ha una dimensione 3 blocchi x 3 blocchi si deve mettere 3

    Il programma risolve sudoku di qualsiasi dimensione (per esempio anche 100x100), purchè determinati.
    Alcuni sudoku difficili arrivano ad essere non determinabili con semplice individuazione di caselle singole ove inserire un singolo valore.
    In questo caso il programmino ricerca la soluzione più adatta fra più varabili.

    Il programma suggerisce le mosse passo a passo indicando la riga, la colonna ed il valore da inserire secondo alcuni schemi prefissati:
    1) ricerca base
    2) ricerca predictor
    3) ricerca per numero su casella singola
    4) ricerca per riga - colonna
    5) ricerca matrice indeterminata

    Esempio con matrice 3x3 con soluzione difficile
    0 0 2 0 0 9 0 0 0
    7 0 1 0 6 4 8 0 0
    0 9 0 5 0 0 7 0 0
    6 0 0 9 5 0 4 0 0
    9 0 0 0 0 0 0 0 1
    0 0 3 0 1 8 0 0 6
    0 0 9 0 0 2 0 4 0
    0 0 5 1 9 0 2 0 7
    0 0 0 3 0 0 6 0 0

    1) RICERCA BASE
    ricerca su righe e colonne se eliminando le righe con il medesimo numero rimangono singole posizioni determinate per un dato valore
    valore 3 - 6 - 1

    sudoku - ricerca base


    2) RICERCA PREDICTOR
    Un po' come nel caso della ricerca base, questa ricerca di soluzione individua se le posizioni vacanti per un dato numero da inserire si trovano in linea (riga o colonna), aspetto che determina una condizione di impossibilità per i blocchi adiacenti, i quali in questo modo potrebbero divenire determinati.
    E' una condizione molto rara che si verifica solo in particolari sudoku molto difficili.


    3) RICERCA PER NUMERO SU CASELLA SINGOLA
    data una posizione non nota individua se risulta un solo valore determinato della serie, completando i numeri già presenti con quelli presenti nella medesima riga, colonna e blocco
    valore: 2 - 4 - 2

    sudoku - ricerca per singolo numero


    4) RICERCA PER RIGA O COLONNA
    In questo caso si considera un numero della serie che dovrebbe disporsi su una riga o su una colonna (ad esempio: 1-2-3-4-5-6-7-8-9). La singola posizione per un dato numero viene determinata individuando se le altre disponibili sono incompatibli nei blocchi adiacenti per la presenza del medesimo valore nel blocco-riga-colonna.
    valore: 5-5-2

    sudoku - ricerca colonna-riga


    5) RICERCA PER MATRICE INDETERMINATA
    In questo caso non esistono più condizioni determinate per disporre i numeri nelle caselle vacanti.
    Supponendo il sistema come risolvibile, si stimano i valori inseribili in un dato posto vacante e si inserisce uno di questi valori, tornando così a risolvere il sistema. Nel caso in cui ciò porti a una condizione di malcostruzione della soluzione si torna indietro e si procede con il secondo valore possibile per la posizione precedentemente aggiunta.
    In questo modo il sistema prima o poi torna determinato e si raggiunge la soluzione.

    sudoku - sistema indeterminato

    Edited by ingggiaco - 2/1/2013, 10:07
     
    Top
    .
  2. ingggiaco
     
    .

    User deleted


    Il file in:
    SourceForge
     
    Top
    .
1 replies since 31/12/2012, 10:52   233 views
  Share  
.