Sudoku 9x9 Logic Solver

 

In tutte le versioni risolutore con generatore di report "step by step" di soluzione, grafici e txt, per schemi numerici "classici" (no diagonali) → vai alla pagina della guida al pannello di controllo del foglio "Classic Grid".

DOWNLOAD → Sudoku 9x9 Logic Solver & Report Builder --- v 2015 05 28 --- Excel 2000-2003

Versione per Excel 2000 e 2003 nel vecchio (.xls) formato di file; il download è in formato .zip di 1.579 kb.

DOWNLOAD → Sudoku 9x9 Logic Solver & Report Builder --- v 2015 05 28 --- Excel 2007-2010-2013 32 bit

Versione per Excel 2007, 2010 e 2013 nel nuovo (.xlsm) formato di file; il download è in formato .zip di 1.703 kb. È consigliabile far "girare" il risolutore solo nelle versioni a 32 bit di Excel (installate in qualsiasi versione di Windows a 32 o 64 bit). Nelle versioni a 64 bit di Excel i calcoli sono comunque esatti ma, se si sceglie l'opzione di generare i report grafici, il tutto gira più lentamente che nelle versioni a 32 bit (a volte veramente molto più lentamente e con qualche possibilità di blocco di Excel - comunque si può tentare, dipende molto dalla scheda grafica). In questo link → http://technet.microsoft.com/it-it/library/ee681792%28v=office.15%29.aspx#compat2 ← c'è una spiegazione dei problemi di grafica delle versioni 64 bit di Excel.

Dalla versione - v 2007 08 13 - è presente una macro che facilita l'importazione in Excel di schemi proposti in formato testo precedentemente copiati negli appunti di Windows (vai alla pagina con le spiegazioni dettagliate sulle caratteristiche di funzionamento di questa macro).

Dalla versione - v 2007 09 30 - è presente la valutazione di difficoltà di soluzione logica (vedi note sulle versioni).

Dalla versione - v 2008 04 01 - è stato introdotto un nuovo foglio per giocare e risolvere manualmente i Sudoku, con una serie completa di comandi e aiuti su un "Pannello di controllo" dedicato (vai alla pagina dedicata con la guida ai comandi e aiuti di gioco); ora è possibile risolvere e importare anche schemi "tipo pencilmark" (che contengono, oltre ai candidati inseriti fissi iniziali, anche i candidati residui nelle altre celle) e i "Sukaku" (altrimenti detti "No-given Sudoku" - "Pencilmark Sudoku" - "Suuji Kakure", dove non ci sono candidati inseriti fissi iniziali ma solo candidati residui di cella). Tuttavia, per chi cerca semplicemente un risolutore "visual" senza funzioni di gioco e senza opzioni per schemi "Pencilmark Sudoku", è ancora disponibile per il download l'ultima versione semplificata → vai al download dell'ultima versione semplificata.

Questo risolutore "non standard" non si limita a fornire semplicemente lo schema iniziale risolto, ma genera un report grafico e uno testuale con tutti i passi logici seguiti per arrivare alla soluzione (nei report, oltre alla soluzione, compaiono solo i passi logici e non gli eventuali tentativi finali quando il risolutore non riesce a trovare una via logica).

I due report sono generati su due fogli di lavoro distinti nominati "Report Grafico" e "Report TXT".

Chi vuole conservare i report deve, quindi, o rinominare i fogli di lavoro dei report o spostarli/copiarli in un'altra cartella di lavoro; "Report TXT" però conviene spostarlo, perché a volte si generano stringhe con più di 1024 caratteri che potrebbero essere troncate con un'azione di copia foglio (si può anche eventualmente fare un semplice copia/incolla dati su un nuovo foglio vergine).

Se si sceglie la rinomina dei fogli nella stessa cartella di lavoro del risolutore bisogna tenere presente le dimensioni che può assumere il file: i due fogli report di uno schema sudoku abbastanza semplice raggiungono comunque una dimensione di circa 300 kb che può aumentare parecchio per schemi molto difficili (vedi files con report di esempio) - questo riferimento di 300 kb vale per il vecchio formato di file .xls che era l'unico disponibile fino a Excel 2003, mentre i nuovi formati .xlsx e .xlsm introdotti a partire da Excel 2007 comprimono già di default i dati quasi al livello di un file .zip .

Il risolutore (a partire dalla versione "v 2015 05 28") ricerca, nell'ordine e ciclicamente, per gli inserimenti fissi o le eliminazioni:

  1. Candidati singoli in cella
  2. Candidati singoli in riga colonna riquadro
  3. Candidati bloccati in riga colonna riquadro (Locked Candidates)
  4. Naked subsets (pair triple & quad)
  5. Hidden subsets (pair triple & quad)
  6. Basic Fishes (X-Wing Swordfish Jellyfish)
  7. Finned e Finned & Sashimi Fishes (X-Wing Swordfish Jellyfish) anche del tipo Siamese Fishes
  8. Franken Fishes (X-Wing Swordfish Jellyfish) → di fatto gli X-Wing non compaiono perché compresi nei Locked Candidates
  9. Finned Franken Fishes (X-Wing Swordfish Jellyfish Squirmbag → in questo caso senza distinzioni Sashimi) - anche del tipo Special, Siamese Franken e Pair & Triple Subsets
  10. Basic e Finned Mutant Fishes (X-Wing Swordfish Jellyfish Squirmbag Whale Leviathan)
  11. Alternating Inference Chains (Forbidding Chains)
  12. Forcing Chains
  13. Forcing Chains con candidati singoli annidati in cella, riga, colonna o riquadro
  14. Forcing Chains con candidati bloccati in riga, colonna, riquadro e/o subsets annidati
  15. Forcing Chains con Alternating Inference Chains (Forbidding Chains) annidate

Quando un algoritmo esce dal suo ciclo senza eliminazioni si passa alla tecnica superiore, se invece trova anche una sola eliminazione si riprende dal passo uno. Gli algoritmi di eliminazione candidati escono dal loro ciclo in due casi: ovviamente quando non trovano più possibili eliminazioni, oppure anticipatamente quando, in seguito ad una eliminazione, rimane in qualche riga/colonna/riquadro un Naked o Hidden Single. Per questo motivo può capitare di osservare, nei report, eliminazioni eseguite con una determinata tecnica quando erano possibili con un'altra tecnica di livello inferiore. E' abbastanza frequente notare nelle Alternating Inference Chains eliminazioni possibili anche con Subsets o Basic Fishes, ma non dovrebbe mai accadere alla prima catena della serie (perché le prime catene eventualmente eliminano i candidati che impediscono l'utilizzo della tecnica inferiore): a partire dalla versione "v 2015 02 21" è disponibile un'opzione per l'uscita dal ciclo Alternating Inference Chains se, dopo l'ultima eliminazione, è possibile proseguire con una tecnica più semplice.

Fino alla versione "v 2007 10 28", l'algoritmo di individuazione subsets ricercava tutti i tipi di naked prima degli hidden, e pertanto segnalava, ad esempio, sempre un naked-quad anziché un hidden-pair in un settore con tre candidati fissi inseriti e sei celle da risolvere, oppure segnalava sempre un naked-quad anziché un hidden-triple in un settore con due candidati fissi inseriti e sette celle da risolvere (vedi note sulle versioni).

Per le tecniche intermedie dei "Fishes" si possono trovare ottime indicazioni nei siti http://hodoku.sourceforge.net/en/tech_fishg.php e http://www.sudoku9981.com/sudoku-solving/fish.php.

Chi vuole maggiori informazioni su Alternating Inference Chains (Forbidding Chains) può visitare il sito di Bruno Greco (dove sono spiegati benissimo i concetti base delle catene), oppure il blog di sudoku.com.au (molti esempi e discussioni su catene di tutti i tipi).

Nella versione attuale non sono supportate le Forcing Chains annidate all'interno di altre Forcing Chains: è l'unico sistema che consente di elaborare una soluzione logica per qualsiasi sudoku a soluzione unica, ma sono veramente pochi gli schemi che richiedono questa tecnica (vedi anche note sulla raccolta di schemi più difficili nella pagina download schemi di "Sudokum Players' Forum").

Non la richiedono, ad esempio, alcuni set di schemi abbastanza noti come Top 95, Top 1465 o VB6-contest.

I tempi di soluzione sono più lunghi di quelli del risolutore standard che usa limitate tecniche logiche (si ferma ai tripli subsets) e non produce alcun report.

Indicativamente, con processore Pentium 4 - 3,8 Ghz, servono comunque pochi secondi per gli schemi con difficoltà massima fino ai subsets, poche decine di secondi per quelli con molte alternating inference chains, massimo tre/quattro minuti per forcing chains con candidati singoli annidati, fino a venti minuti circa per forcing chains con candidati bloccati e/o subsets annidati e da una a più ore per forcing chains con Alternating Inference Chains annidate (per tutti questi il risolutore 9x9 standard impiega quasi sempre meno di un secondo e rarissimamente più di cinque secondi).

Il tempo di elaborazione indicato nella UserForm finale è calcolato senza tener conto del tempo iniziale di reset dei due fogli "Report Grafico" e "Report TXT" - che può essere di qualche secondo se l'ultimo "Report Grafico" è molto "voluminoso" (nel risolutore standard, invece, il tempo indicato nel message box comprende veramente tutto il ciclo di elaborazione).

Il "Sudoku 9x9 Logic Solver & Report Builder" ricerca comunque una via logica anche per gli schemi a soluzioni multiple, e indica nei report fino a un massimo di dieci soluzioni.

Ovviamente questi schemi non si possono mai risolvere completamente in modo logico, ed il risolutore, "prima di arrendersi" e passare ai tentativi, prova tutte le tecniche ed impiega molto tempo (di solito oltre mezz'ora sempre con Pentium 4  - 3,8 Ghz) prima di dare le soluzioni multiple (dalla versione "v 2008 04 01" è tuttavia possibile - da apposito "CommandButton" - fare un veloce controllo preventivo sul numero di soluzioni ammesse).

Per una migliore comprensione dei report grafici si può visionare la legenda in:

 

Vai alla pagina con i report di esempio

Vedi note sulle versioni Logic Solver