un foglio elettronico per Sudoku

In rete sono stati proposti parecchi risolutori di Sudoku per Excel: potete cominciare a esplorarli da questa pagina. Tutti, o perlomeno tutti quelli che sono riuscito a trovare io, hanno lo stesso punto in comune: si tratta di algoritmi implementati via macro, ovvero scritti in VBA.

In questo articolo voglio presentare qualcosa di diverso e più appropriato, secondo me, alla natura del foglio elettronico: un risolutore di Sudoku senza macro che utilizza solo le funzioni del foglio di lavoro, ripreso da un mio progetto realizzato per gioco tempo fa e ora riscritto quasi interamente. In altre parole, è un’implementazione visiva dell’algoritmo di risoluzione che lavora un passo alla volta, evidenziando a ogni nuova compilazione di cella le mosse possibili per il completamento della griglia. Non è un algoritmo esaustivo, ovvero non risolve tutti i Sudoku e in particolar modo quelli più difficili, perché applica solo due regole:

  • la regola che io chiamo del candidato unico (anche detta per eliminazioni successive o naked single), in base alla quale vengono occupate le caselle in cui, eliminando i numeri già presenti nelle altre caselle della stessa riga, della stessa colonna o dello stesso riquadro, non rimane che un unico valore ammissibile
  • la regola che io chiamo del seggio unico (anche detta per zone proibite o hidden single), in base alla quale vengono compilate le caselle in cui uno dei valori ammissibili è già stato eliminato come candidato da tutte le altre caselle della stessa riga, della stessa colonna o dello stesso riquadro.

Tuttavia queste due regole sono sufficienti per risolvere tutti o quasi tutti i Sudoku di livello facile e intermedio, e di proporre un insieme ristretto di mosse, quelle che non contraddicono le due regole citate, per risolvere i Sudoku di livello superiore.

Ho cercato di implementare le due regole nel modo più semplice possibile. Spero che il tutto risulti comprensibile aprendo il foglio in allegato, anche perché del resto è tutto, come da mia abitudine, scandalosamente poco commentato e documentato.

Il file è salvato nel formato di Excel, ma ho voluto realizzare il risolutore direttamente in Calc di OpenOffice, e ne ho testato il funzionamento in entrambi i programmi. In Excel è richiesta comunque l’aggiunta del modulo Strumenti di analisi.

Da scaricare: sudoku.xls.

4 pensieri su “un foglio elettronico per Sudoku

  1. due numeri in due caselle (alternati ma non inseribili) non è possibile inserirli nel foglio? In modo che le altre caselle di riga, colonna e riquadro ne tengano conto? Non si potrebbe creare un artefizio adatto? Comunque complimenti all’autore.

  2. Grazie dei complimenti.
    Provo a rispondere, anche se non sono sicuro di avere capito bene.
    Dato uno schema non completamente risolto, è possibile compilare una o più caselle “libere” (cioè per le quali non viene indicato il valore obbligato) e quindi procedere seguendo i suggerimenti delle due regole implementate.
    Se lo schema viene completamente riempito senza errori, allora le mosse “libere” erano giuste; se invece a un certo punto viene segnalato un errore, allora è possibile tornare indietro (usando il comando annulla del foglio elettronico) tante volte fin quando non si annullano le stesse mosse libere.

  3. Salve, ho letto che ha confrontato vari solutori di sudoku. Vorrei mostrarle il mio che è stato realizzato solamente con funzioni logiche.

    • Mi scusi del ritardo (mooolto imbarazzante) con cui le scrivo, evidentemente il suo messaggio mi è sfuggito scorrendo la coda di moderazione. Sì, mi interessa, mi mostri pure, se ancora le fa piacere. Grazie.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.