Sudoku tutto di tutto

 

Collegamenti utili gratuiti

 

  • Da Wikipedia :

  • Il sudoku (giapponese: 数独, sūdoku, nome completo 数字は独身に限る ji wa dokushin ni kagiru, che in italiano vuol dire "sono consentiti solo numeri solitari") è un gioco di logica nel quale al giocatore o solutore viene proposta una griglia di 9×9 celle, ciascuna delle quali può contenere un numero da 1 a 9, oppure essere vuota; la griglia è suddivisa in 9 righe orizzontali, nove colonne verticali e, da bordi in neretto, in 9 "sottogriglie", chiamate regioni, di 3×3 celle contigue. Le griglie proposte al giocatore hanno da 20 a 35 celle contenenti un numero. Scopo del gioco è quello di riempire le caselle bianche con numeri da 1 a 9, in modo tale che in ogni riga, colonna e regione siano presenti tutte le cifre da 1 a 9 e, pertanto, senza ripetizioni. In tal senso lo schema, una volta riempito correttamente, appare come un quadrato latino.

    La versione moderna del gioco fu ideata dall'architetto statunitense Howard Garns e pubblicata da Dell Magazines nel 1979 con il titolo "Numbers in Place".

  • In seguito fu diffuso in Giappone dalla casa editrice Nikoli nel 1984, per poi diventare noto a livello internazionale soltanto a partire dal 2005

 

  • Fine articolo Sudoku tutto di tutto

 

Gioco a Sudoku on line

 

 

Content on this page requires a newer version of Adobe Flash Player.

Get Adobe Flash player

 

Come risolvere un sudoku (non diabolico)

Daniele Zamburlini

 

Riassunto La soluzione di un sudoku, considerato come matrice quadrata, è affrontata sostituendo gli interi da uno a nove con altrettanti numeri primi ed affiancando alla matrice da completare un’altra che, nel modello sviluppato, fornisce, per ogni cella, le possibili assegnazioni alla griglia; si individuano così tecniche risolutive elementari, che, per una classe di sudoku ben precisata, conducono alla soluzione. Si danno infine esempi di metodi risolutivi più sofisticati ugualmente trattabili col modello. Un’implementazione in Turbo Pascal completa l’articolo.

 

Abstract This paper presents a method to fill in the grid of a sudoku; digits 1-9 are substituted by prime integers and a suitable matrix is related to candidate numbers for cells. If puzzle can be solved by basic scanning alone, the method always succeeds. The method is also useful to solve some harder puzzles by means of candidate elimination. All algorithms are implemented in Turbo Pascal.

 

 

 

Daniele Zamburlini

 


Introduzione

 

Passatempo e rompicapo al tempo stesso, il sudoku ha avuto recentemente grande diffusione; le sue origini risalgono ai quadrati greco-latini o di Eulero, dei quali rappresenta un caso particolare (cfr. sitografia); per venirne a capo nei casi più impegnativi, si richiedono capacità logiche e una buona dose di tenacia. Inizialmente poco più di una semplice curiosità, l’interesse per questo gioco ci ha portato ad elaborare un procedimento risolutivo di carattere generale che ora viene presentato. Questo metodo è facilmente implementabile in un linguaggio di programmazione di tipo scientifico (ne daremo una versione in Turbo Pascal) e poiché utilizza proprietà degli interi, riteniamo possa essere apprezzato anche in campo matematico.

Risolvere un sudoku consiste nel completare una griglia quadrata di 81 caselle, suddivisa in 9 riquadri (vedi fig. 1) e nella quale sono già presenti alcuni numeri dall’ uno al nove, con l’inserimento di un valore in ogni cella vuota, rispettando quest’unica Regola:

  • a gioco concluso in ogni riga, colonna, riquadro dovranno trovarsi tutti i numeri dall’uno al nove.

Interpretiamo la Regola, facendo riferimento ancora alla fig. 1: nella casella di riga quattro e colonna tre c’è un quattro, allora tale intero non potrà comparire in altre caselle né della quarta riga né della terza colonna né del riquadro relativo. Sempre in fig. 1, esaminando l’ottava riga si nota l’assenza del quattro e si vede poi che l’unica casella che lo può ospitare è la quinta. È possibile allora riformulare la Regola distinguendone due parti:

  • se in una cella è presente n , esso non potrà più apparire né nella riga, né nella colonna, né nel riquadro che lo contengono.
  • se in una riga (colonna o riquadro) manca n, una delle caselle libere deve essere necessariamente destinata ad esso.

L’autore del gioco assegna ad alcune celle (indicativamente da 20 a 35) interi da uno a nove e lascia che il solutore completi la griglia. Possono aversi anche altre prescrizioni o sulla quantità dei dati di partenza: non più di trenta o sulla loro distribuzione: simmetrica rispetto al centro dello schema; nel presente contesto tali limitazioni non hanno rilievo.

 

 

 

 

 

 

7

 

 

1

 

1

 

 

4

 

 

 

9

6

 

8

 

9

 

 

 

 

 

8

 

4

 

6

2

 

 

9

 

 

3

 

 

 

5

 

 

6

 

 

3

9

 

7

 

4

 

 

 

 

 

7

 

4

 

7

2

 

 

 

8

 

 

3

 

6

 

 

3

 

 

 

 

 

Figura 1

 

Poiché generalmente si richiede che il sudoku abbia una sola soluzione, i numeri iniziali devono essere predisposti in modo che sia consentita un’unica configurazione conclusiva nel rispetto della Regola. Nel panorama variegato dei “programmi solutori di sudoku”, quello che stiamo per esporre, affronta il gioco secondo una strategia molto in uso nell’approccio manuale: si determina per ogni casella l’insieme degli interi ad essa assegnabili (la rosa dei candidati) e si ricercano poi le posizioni per le quali è possibile decidere il valore o perché c’è un unico candidato o perché tra essi uno solo deve essere collocato; proseguendo in questo modo, spesso si arriva alla soluzione. In prima istanza il metodo risulta valido quando i candidati, trovati applicando la Regola agli elementi presenti, consentono la scelta di un percorso risolutivo; si tratta soprattutto, ma non esclusivamente, di sudoku facili o di media difficoltà. Anche se il procedimento non ha sempre successo, vedremo però che è possibile ampliare sensibilmente il suo campo di azione, inoltre è in grado di stabilire se i dati iniziali sono accettabili o portano a violare la Regola; le questioni saranno riprese in seguito.

 

Modello matematico e procedimento risolutivo

 

In modo abbastanza naturale, il sudoku viene visto, come matrice quadrata di ordine 9 (nove righe e nove colonne) sudoku sudoku, suddivisa in 9 matrici 3x3, il cui generico elemento sia sudoku, sudoku, dove w e v sono gli indici della sotto-matrice, mentre h e l individuano il riquadro in sudoku, secondo le indicazioni di fig. 2, e ne costituiscono le coordinate. Definiamo unità, destinata a contenere i numeri da uno a nove, qualsiasi riga Ri o colonna Ci (sudoku) o riquadro Q(h,l) (sudoku).

Lasciamo al lettore verificare che, tra gli indici i e j dell’elemento sudoku e le coordinate del riquadro Q(h,l) di appartenenza, intercorrono le relazioni:

 

sudoku             sudoku                    (1)

 

dove [x] è la parentesi di Gauss (massimo intero minore o uguale ad x).

 

 

sudoku

sudoku

sudoku

sudoku

sudoku

sudoku

sudoku

sudoku

sudoku

 

Figura 2

 

Le formule che fanno passare dall’elemento (w,v) della matrice sudoku a quello sudoku di sudoku sono invece le seguenti:

sudoku                sudoku             (2)

 

come si può agevolmente constatare.

Poiché la scelta degli interi dall’uno al nove risponde solo ad esigenze di semplicità, proponiamo di sostituirli con numeri primi sudoku, conveniamo poi che alla cella vuota del sudoku sia attribuito il valore uno, a quella occupata il definitivo sudoku, ossia:

cella vuota sudoku             cella occupata sudoku

Calcoliamo ora il prodotto M dei nove sudoku:

sudoku            (3)

 

Per la riga i, colonna j e riquadro (h, l) definiamo come indici di presenza i valori:

 

sudoku  sudoku  sudoku  (4)

 

i prodotti (4) riguardano dunque gli elementi della riga i, della colonna j e del riquadro (h,l). Consideriamo anche i quozienti:

 

sudoku sudoku sudoku (5)

 

Essi si possono ritenere gli indici di assegnazione dell’unità u; infatti non è difficile riconoscere che gli A(u) di (5), se non si riducono ad uno dei sudoku (sudoku), sono ciascuno il prodotto dei numeri che rimangono da attribuire a quella unità; ciò per il noto teorema sull’unicità della scomposizione di un intero in fattori primi (ecco il motivo dell’uso dei numeri primi).

Per ogni cella vuota sudoku, poniamo sudoku, sudoku e sudoku [h ed l si intendono ricavati da i e j mediante (1)] e costruiamo una seconda matrice, sudoku nel seguente modo:

sudokusudoku       sudoku      (6)

ossia in corrispondenza di caselle libere di sudoku l’elemento della nuova matrice è il M.C.D. dei (5), altrimenti vale uno. sudoku risulta pertanto l’indice di assegnazione della cella ossia il prodotto degli interi che costituiscono la rosa dei candidati della posizione sudoku.

Anche sudoku, come sudoku, sarà suddivisa in riquadri sudoku.

Possiamo ora enunciare la seguente:

 

Proposizione 1 (P-1) – Condizione sufficiente per assegnare alla cella vuota sudoku il numero sudoku è che sudoku.

 

Infatti sudoku (sudoku) può essere collocato in sudoku, solo se divide i tre indici (5) ossia il loro massimo comun divisore, qualora questo sia sudoku, il candidato è unico e l’assegnazione obbligata. La condizione non è necessaria, perché esistono anche altre modalità di attribuzione.

Una scelta ragionata dei sudoku, ininfluente ai fini teorici, può rendere tuttavia più agevole l’implementazione; consideriamo i due insiemi:

A = {5,7,11,13,17,19,23,29,31}

B = {2,3,5,7,11,13,17,19,23}

 

condizione necessaria, affinché si abbia sudoku è che:

sudoku per A    sudoku per B

per A la condizione è anche sufficiente (se il M.C.D. è il prodotto di due o più numeri vale almeno 35) e la traduzione in algoritmo viene semplificata, mentre per B questo non accade; pertanto per l’implementazione abbiamo scelto A. Anche se talvolta ci serviremo per praticità dei numeri dall’uno al nove, si ricordi che in sudoku e sudoku ci sono solo o elementi o prodotti di elementi di A, secondo la corrispondenza: sudoku, sudoku, sudoku, sudoku, sudoku, sudoku, sudoku, sudoku, sudoku.

P-1 realizza una tecnica fondamentale per la soluzione di un sudoku: la destinazione di sudoku ad una cella per eliminazione degli altri otto elementi già presenti nella riga e/o colonna e/o riquadro che la contengono.

Gli appassionati del gioco sanno che esiste un altro modo di attribuzione, che potremmo dire per selezione: esso consiste nell’individuare, in una determinata unità (riga, colonna, riquadro), una posizione sudoku, nella quale sudoku debba essere collocato, in quanto all’interno dell’unità solo ivi assegnabile (cfr. parte seconda della Regola). Osserviamo il sudoku di fig.1: nella seconda colonna il quattro può occupare solo la prima riga, dal momento che è presente nella seconda e settima riga e nel riquadro (2,1), così il sei nella quinta riga sta all’ottava colonna ed il quattro nel riquadro (3,1) nell’angolo inferiore sinistro.

Per questa ricerca è ancora utile sudoku: infatti, se esaminando una riga (colonna, riquadro), si scopre che il fattore sudoku, contenuto in sudoku e perciò suo divisore, non si ritrova in altre celle della riga (colonna o riquadro), allora sudoku è destinato a sudoku.

Vale pertanto la seguente:

 

Proposizione 2 (P-2) – Considerati nella matrice sudoku la riga i, la colonna j e il riquadro sudoku [h, l, w e v correlati a i e j mediante (1) e (2)], condizione sufficiente per assegnare sudoku ad sudoku è che sia soddisfatta almeno una delle condizioni:

 

  • nella riga i sudoku unicamente per sudoku;
  • nella colonna j sudoku unicamente per sudoku;
  • nel riquadro (h,l) sudoku solo per sudokue sudoku.

 

Infatti, sudoku è un prodotto dei sudoku (la rosa dei candidati) e ciascun dei suoi fattori è collocabile in sudoku; poiché la riga (colonna o riquadro) deve contenere sudoku e la sua presenza è prevista solo nella posizione sudoku dell’unità, questo è sufficiente per dedurre sudoku (vedi Regola, parte 2^); notiamo che nella stessa unità possono aversi più destinazioni.

Utilizzando sudoku, sono stati pertanto individuati quattro modi per attribuire a sudoku il valore finale:

  • per eliminazione degli altri otto candidati presenti in riga, colonna e riquadro relativi (cfr P-1);
  • per selezione nella riga i di uno dei sudoku presente solo alla colonna j (cfr. P-2);
  • per selezione nella colonna j di uno dei sudoku presente solo alla riga i (cfr. P-2);
  • per selezione nel riquadro contenente la casella sudoku di uno dei sudoku che compare soltanto in tale posizione (cfr. P-2).

Se utilizzando le tecniche i) – iv) da sudoku, non si ricavano assegnazioni, allora il metodo non è in grado di fornire la soluzione; supponiamo invece che si trovino uno o più numeri, essi vanno inseriti in sudoku; infatti sudoku e sudoku sono da interpretare come matrici dinamiche, le quali, al progredire del procedimento risolutivo, si modificano di continuo: nella prima si raccolgono i valori definitivi, nella seconda si esegue il ricalcolo dei candidati per le celle libere e si mettono fuori gioco quelle occupate, ponendo in esse uno (operazione di aggiornamento). Notiamo che le modalità per dare il valore a una casella possono essere più di una (per es.: selezione per riga, per colonna, etc.)

Nell’approccio manuale ad un sudoku, queste strategie vengono adottate in successione arbitraria, a seconda dell’intuito o del “colpo d’occhio” del solutore; in questo ambito, definiremo invece un percorso preciso, il quale tenda a raggiungere la disposizione finale del gioco, prima però è necessaria un’ulteriore considerazione.

Poiché da sudoku sono spesso consentite più attribuzioni, è necessario stabilire se la matrice va ricalcolata dopo ciascuna di esse o alla fine di tutte. A tal proposito, vale la seguente:

 

Proposizione 3 (P-3) – Sia sudoku associata ad un sudoku sudoku, se le tecniche ii)- iii)- iv)- consentono la destinazione di sudoku valori e se dopo h delle k assegnazioni previste (sudoku) sudoku viene aggiornata a sudoku, la nuova matrice prevede ancora tutte le sudoku destinazioni non effettuate.

 

Supponiamo, per es., che sudoku sia da collocare in sudoku per selezione nella riga q - tecnica ii) - e che l’aggiornamento dasudoku a sudoku avvenga prima della sua assegnazione; dopo il ricalcolo ogni elemento sudoku della riga q, o coincide con sudokuo, per effetto della/e ultima/e designazione/i, lo divide. La mancanza di sudoku da sudoku sarebbe giustificabile soltanto per la sua posizione fuori dalla riga q e si violerebbe allora la Regola che richiede la sua presenza nell’unità; pertanto sudoku deve apparire ancora tra i divisori di sudoku e resta l’unico candidato valido per sudoku. Questo si estende facilmente alle altre situazioni; in conclusione, in qualunque momento avvenga, l’aggiornamento mantiene le destinazioni previste e spesso le amplia.

Se, per sudoku (casella vuota), uno degli indici (5) risulta non intero (e allora anche sudoku non lo è) o sudoku, si deduce, nel primo caso, che in un’unità contenente sudoku, c’è un numero ripetuto e quindi nel sudoku c’è contraddizione, nel secondo che i (5) sono primi tra loro, manca il candidato per sudoku ed il gioco è inconsistente. In entrambe le eventualità non ha senso proseguire. Pertanto il procedimento verifica anche se la disposizione iniziale è accettabile, mentre, se esiste più di una soluzione, il metodo si arresta come quando non è in grado di raggiungerla.

 

Campo di applicabilità del metodo ed esempi

 

Riprendendo il discorso dell’introduzione, diremo che un sudoku è “facile” o di 1^ livello - inglese easy, gentle, moderate - (la terminologia riprende una distinzione utilizzata in alcuni siti) , se, dalla configurazione iniziale a quella finale, ogni assegnazione avviene scegliendo il candidato tra quelli previsti dalla Regola a partire esclusivamente dalle celle già occupate; ossia sudoku viene attribuito ad sudoku del riquadro Q(h,l) [h e l sono legati a i ed j dalle (1)], solo se:

  • nella riga i, e/o colonna j e/o riquadro sudoku si trovano già tutti i sudoku eccetto sudoku;
  • da un esame dei numeri presenti nella griglia, la Regola impone alla casella sudoku di ospitare sudoku, altrimenti almeno una delle tre unità - riga i, colonna j, riquadro sudoku- ne resta priva.

È immediato riconoscere che queste indicazioni equivalgono all’uso delle tecniche i) – iv) esposte in precedenza, quindi un percorso risolutivo che si basi su P-1 e P-2 ha successo solo su giochi di livello 1^ e viceversa.

Vedremo poi qualche strategia più avanzata, ora è invece opportuno scegliere per l’implementazione un procedimento adatto al primo livello. Poiché l’assegnazione in base a P-1 è la più immediata, essa sarà privilegiata; proponiamo quindi un percorso risolutivo che ad ogni passo affianchi a P-1, ciascuna delle modalità di P-2, secondo lo schema:

  • aggiornamento di sudoku (al primo passo è calcolo) ed assegnazioni per eliminazione (cfr. P-1); l’aggiornamento è ripetuto fintanto che ci sono nuovi valori da aggiungere e in alcuni casi questa operazione basta a completare la griglia;
  • tutte le assegnazioni consentite mediante selezione, alternativamente, per riga o per colonna o per riquadro (cfr. P-2).

Pertanto ogni passo verso la soluzione si compone di tre parti:

  • aggiornamento seguito da ii);
  • aggiornamento seguito da iii);
  • aggiornamento seguito da iv).

Osserviamo che nell’approccio manuale al gioco la ricerca per selezione risulta più immediata e generalmente preferita rispetto a quella per eliminazione.

Nell’implementazione il calcolo di sudoku e le destinazioni in base a P-1 e P-2 (solo iv) avvengono per riquadri e procedendo per righe secondo l’ordine:

sudoku

le assegnazioni secondo P-2 - ii)- iii) righe e colonne - si seguono  per valori crescenti sia dell’unità (riga 1,..,9 etc.) che all’interno di essa (es.: uno e tre da collocare: prima uno, anche al nono posto, poi tre); l’ultima proprietà vale anche per iv)- riquadri.

Se il sudoku è di 1^ livello, si raggiunge la soluzione.

Seguiamo, nel gioco di fig. 1, il primo passo del percorso; ci serviremo, per praticità, dei numeri dall’uno al nove, pur ricordando la corrispondenza:sudoku, sudoku, sudoku, sudoku, sudoku, sudoku, sudoku, sudoku, sudoku:

  • per aggiornamento sudoku e iterando sudoku; per successiva selezione riga sudoku, sudoku e sudoku;
  • per aggiornamento sudoku, sudoku e iterando sudoku; per successiva selezione colonna sudoku, sudoku e sudoku;
  • per aggiornamento nessuna attribuzione; per successiva selezione riquadro sudoku, sudoku, sudoku e sudoku.

Lasciamo al lettore sia la prosecuzione del gioco sia la verifica che partendo dalla matrice trasposta al primo passo si ottengono le medesime attribuzioni, non nello stesso ordine. A tal fine si può anche utilizzare l’eseguibile sotto DOS indicato in seguito.

La distinzione tra sudoku di 1^ livello e di livello superiore si fonda sul fatto che per i primi, come si è detto, dalla situazione iniziale a quella finale ogni assegnazione è una scelta obbligata tra i candidati previsti della Regola a partire dalle caselle effettivamente occupate, mentre per i secondi la designazione, in qualche circostanza del percorso, avviene in seguito a ulteriori indicazioni fornite dalla Regola in relazione ai valori ipotizzabili per celle ancora vuote. Per i giochi di livello superiore è pertanto necessario escogitare nuove strategie, tra esse citiamo le assegnazioni virtuali.

 

 

5

 

8

 

 

 

6

7

9

 

6

 

5

8

7

 

4

 

 

2

7

6

9

 

3

8

5

 

 

 

7

 

2

 

 

 

 

 

2

4

6

8

7

 

3

 

7

4

9

 

3

 

 

 

 

8

6

 

7

9

5

2

 

2

1

5

8

4

6

9

3

7

7

 

 

 

 

5

 

6

8

Figura 3

Supponiamo che i valori sudoku sudoku sudoku siano da attribuire esclusivamente ad altrettante celle sudoku con sudoku, sudoku, senza che sia possibile stabilire la loro esatta ubicazione; oppure che sudoku (sudoku) sia vincolato ad occupare solo una zona di un’unità; in queste ed altre eventualità essi risultano virtualmente presenti; questo può permettere la soppressione di candidati e consentire nuove assegnazioni.

Vediamo un esempio: se due celle sudoku e sudoku di un’unità sudoku possono ospitare solo sudoku e sudoku - ciò si verifica per es. quando in una riga, colonna o riquadro mancano due valori -, sono da considerare ad essi riservate; pertanto entrambi devono essere esclusi dalle rimanenti celle sia di sudoku sia delle unità che contenessero sudoku e sudoku.

 

 

5

3/4

8

1/2/3

1/2/3

1/

4

6

7

9

1/3/9

6

1/3/9

5

8

7

1/2

4

1/2

1/

4

2

7

6

9

1/

4

3

8

5

 

Figura 4

 

 

Dal sudoku di fig. 3, abbiamo ricavato e riportato nella matrice sudoku di fig. 4 (per praticità essa fa le funzioni sia di sudoku, in grassetto, che di sudoku in corsivo), i candidati per le tre righe superiori: notiamo due coppie di assegnazioni virtuali: in R2 (2^ riga) uno e due in sudokue sudoku e in Q(1,2) uno e quattro in sudoku e sudoku; sono perciò da cancellare: uno e due dalle altre celle di R2, uno e quattro da Q(1,2).

Tenendo presente quanto detto, riscriviamo sudoku (fig.5); in effetti, questa è la prima riga di sudoku:

sudoku (celle occupate),

sudoku (candidati 11 e 13 ossia tre o quattro)

sudoku (due e tre) e sudoku (uno e quattro).

Esaminando sudoku di fig. 5, si vede che le assegnazioni virtuali ne hanno create ulteriori: tra esse tre e nove in sudoku e sudoku (riquadro Q(1,1)) e due e tre in sudoku e sudoku (prima riga R1); entrambe portano alla destinazione di quattro alla cella (1,2); questa tecnica di livello superiore è facilmente recepibile dal modello.

 

 

5

3/4

8

2/3

2/3

1/4

6

7

9

3/9

6

3/9

5

8

7

1/2

4

1/2

1/4

2

7

6

9

1/4

3

8

5

 

Figura 5

 

Lo stesso sudoku si presta anche per verificare come uno dei sudoku possa essere vincolato ad una zona: nella seconda riga il tre, deve occupare o il primo o terzo posto (vedi fig. 4 e 5); perciò nella prima e terza riga di Q(1,1) è da escludere tre: quindi ancora sudoku. (vedi in seguito segmento-2)

Ricordando che, se sudoku, allora è candidato in sudoku, ecco alcuni esempi di tecniche di livello superiore realizzabili modificando la matrice sudoku e integrabili nel modello (le denominazioni sono nostre):

duale: per righe: se sudoku; nella riga i si mantengono sudoku e sudoku, eliminando eventuali fattori sudoku esudoku dagli altri elementi (assegnazione virtuale vista prima); questo vale anche per colonne e riquadri;

triale: analoga alla precedente, considera nella riga i un’occupazione virtuale di tre caselle (i,t) (i,u) e (i,v) da sudoku; ciò prevede, oltre alla situazione: sudoku, altre eventualità che lasciamo individuare al lettore; si sopprimono dalle altre caselle i fattori sudoku, sudoku e sudoku; idem per colonne e riquadri;

segmento-2 per righe: se sudoku e sudoku soltanto per sudoku (sudoku intero): ossia  nella riga i sudoku può esser attribuito solo a sudoku e sudoku, in uno stesso riquadro, allora è lecito cancellare sudoku dalle altre righe di quel riquadro;

segmento-3 per righe: se sudoku, sudoku e sudoku soltanto per sudoku (sudoku intero): ossia  nella riga i sudoku può trovarsi solo in sudoku, sudoku e sudoku, in uno stesso riquadro; si cancella sudoku dalle altre righe del riquadro in questione;

segmento-2 e segmento-3 si estendono alle colonne.

Questi metodi modificano sudoku e quindi riducono i candidati; qualora in una casella ne resti uno solo, si procede alla sua assegnazione. Per sfruttare tutta la loro potenzialità, bisogna utilizzarli in sequenza e senza aggiornamenti fino alla prima collocazione; se ciò non avviene, come ultima risorsa, si ricorre alle tecniche ii) – iv). In effetti queste attribuzioni spesso non sono riferibili ad un criterio ben definito, ma piuttosto al loro insieme. In caso di fallimento, è opportuno riapplicarle; poiché la cancellazione di alcuni fattori può creare le premesse per escluderne altri ad un riesame. Durante la sperimentazione del programma, seppur raramente, la scelta del candidato è stata possibile al secondo o anche terzo tentativo; riteniamo però che approfondire queste strategie esca dall’ambito del presente lavoro e notiamo infine che non riescono ad esaurire tutte le modalità di attribuzione.

È ovvio che metodi avanzati si possono utilizzare per risolvere qualsiasi sudoku, il gioco però rimane di 1^ livello, quando non sono indispensabili: ecco perché nel programma integrale si ricorre ad essi solo nel caso dell’inefficacia delle tecniche i) – iv).

Nel campione di puzzle esaminato, 200 “facili o di media difficoltà”, 150 “difficili” e 150 “diabolici”, quelli di 1^ livello sono stati rispettivamente il 100%, 48% e 22% ; in realtà, secondo un criterio abbastanza accettato, giochi impegnativi dovrebbero richiedere una strategia non elementare almeno in un’occasione. Abbiamo invece riscontrato che la classificazione proposta non era sempre attendibile, dal momento che parecchi “diabolici” si trattavano allo stesso modo dei “facili”. Sono stati perciò esaminati giochi di varie provenienze, tratti da libri, quotidiani e dal web. L’uso di destinazioni virtuali è risultato vincente per circa quattro quinti dei sudoku “difficili” e oltre la metà dei “diabolici”.

Il limite del metodo consiste nel fatto che non è in grado di proseguire, se manca la certezza di una nuova assegnazione; in questa eventualità, i “solutori di sudoku” più avanzati iniziano un’esplorazione sistematica dei percorsi consentiti da ciascuna posizione e ne individuano uno valido; la scelta avviene escludendo quelli che violano la Regola, cioè o portano a contraddizioni (valori duplicati in una stessa unità) o sono inconsistenti (in una o più posizioni mancano candidati).

Come si è detto, il procedimento segnala contraddizioni e inconsistenze durante la ricerca, la quale, in tal caso, viene interrotta; non riesce invece a distinguere i giochi che non è in grado di risolvere da quelli che ammettono più configurazioni finali.

Abbiamo ritenuto opportuno riportare e commentare solo quella parte del programma che riguarda le tecniche di 1^ livello in considerazione sia dell’impostazione teorica del lavoro sia della consistenza del listato completo (circa 600 linee), il quale è disponibile assieme ad un eseguibile nei siti che sono indicati in seguito.

Concludendo rassicuriamo gli appassionati di questo rompicapo, i quali affrontando un sudoku, trovano ogni volta strategie ad hoc, possono dormire sonni abbastanza tranquilli, perché l’implementazione che stiamo per presentare riuscirà solo parzialmente a togliere loro il piacere di risolvere un “diabolico”.

 

 

Bibliografia e sitografia

 

M. Mepham (a cura di) Sudoku 1 e 2 – 2005 - Corriere Della Sera - Milano

M. Huckvale (a cura di) Il Grande Libro del Su Doku Fandango –2005 – Fandango Libri – Roma

1,2,3…sudoku! – 2005 - Alpha Test – Milano

Sudoku 1 – 2005 – Kowalski Editore - Milano

Wayne Gould  Sudoku tratti dal Corriere della Sera - estate

it.wikipedia.org/wiki/Sudoku

it.wikipedia.org/wiki/Quadrato_latino

en.wikipedia.org/wiki/Sudoku

Eric W. Weisstein et al. "Sudoku." "Latin Square." From MathWorld

mathworld.wolfram.com/Sudoku.html

mathworld.wolfram.com/LatinSquare.html

sudoku.org.uk/

websudoku.com/

www2.polito.it/didattica/polymath/htmlS/probegio/GAMEMATH/Sudoku/sudoku.html

 

 

Commento al programma SUDOKU.

 

Il listato del programma completo che recepisce anche le tecniche basate sulle destinazioni virtuali è reperibile e si può liberamente scaricare nel sito:

www. liceoxxv.it /documenti/listato-pascal.htm,

dallo stesso sito si può anche scaricare il programma eseguibile, che ne deriva SUDOKU .exe.

 

Per verificare se a è divisore di b, si è fatto uso della funzione int(x), parte intera di x, secondo lo schema:

sudoku;

vediamo due esempi:sudoku quindi 7 divide 385, sudoku quindi 7 non divide 384.

Il criterio è attendibile solo se ciascun calcolo non supera il massimo N della mantissa del formato a disposizione (single, double, etc); per l’exdended del Pascal, qui utilizzato, poiché risulta sudoku, la condizione è ampiamente soddisfatta.

Se i dati in ingresso non sono interi da zero a nove, appare un messaggio che l’elaborazione sarà interrotta; infine, mentre i risultati parziali sono primi da 5 a 31, nella matrice finale compaiono nuovamente i numeri dall’uno al nove.

Per la ricerca su righe e colonne -tecniche ii)- iii)- è stato elaborata un unico procedimento, il quale, operando alternativamente sulle matrici, sudoku, sudoku e sulle trasposte sudoku, sudoku, le realizza entrambe.

Il programma prevede queste procedure:

trasponi: effettua la trasposizione; un indicatore sudoku, modificato ad ogni scambio di righe con colonne, consente di mandare in uscita numeri in accordo con la matrice di partenza;

maxdiv: calcola il M.C.D. di tre numeri mediante l’algoritmo euclideo delle divisioni successive;

vuote: conta i posti da occupare; serve a valutare se la ricerca possa continuare o si debba considerare conclusa: infatti qualora la soluzione sia stata trovata (non ci sono più celle vuote) o non si possa raggiungere (le vuote non diminuiscono), il programma deve essere arrestato;

verifica: viene attivata se uno degli indici (5) non è intero o se il loro M.C.D è uno, in quanto i dati iniziali non sono accettabili; individua eventuali valori ripetuti nella stessa unità o posizioni prive di candidati;

aggiorna: costruiscesudokued effettua l’assegnazione per eliminazione (cfr. P-1) e controlla che i (5) siano interi e non primi tra loro; un contatore skk itera il processo fintantoché ci sono nuove destinazioni. Osserviamo che sudoku di (5), è calcolato a partire dall’elemento sudoku di ogni riquadro e che per determinare gli altri due indici si utilizzano le relazioni (2);

linea: opera la selezione per righe o colonne (cfr. P-2): mediante il criterio di divisibilità, tutti gli elementi sono scomposti in fattori e la somma degli esponenti di ciascun sudoku (sudoku) viene accumulata in un deposito sudoku; se l’esponente di sudoku si riduce a uno, si individua la posizione e lo si colloca;

riquadro: analoga alla precedente, si applica ai riquadri; osserviamo che nel passare dagli elementi di sudoku a quelli di sudoku si fa uso ancora di (2).

Il programma principale, acquisiti i dati iniziali, li converte nei sudoku={5,7,11,13,17,19,23,29,31}, calcola sudoku (vedi (3)), e utilizza ciclicamente le tecniche di 1^ livello secondo le modalità stabilite; ad ogni iterazione il contatore iniziale delle caselle vuote ski è confrontato con quello finale skf; il procedimento prosegue fino a che skf = ski e allora le eventualità sono due:

  • indicatore delle celle vuote sudoku, allora il sudoku, di 1^ livello, è stato risolto; si passa alla fase finale convertendo i sudoku in 1,2,..,9 e nello schermo appare la matrice completa;
  • sudoku : il metodo non è in grado di dare nuove assegnazioni, perché il gioco è di livello superiore; si manda in uscita la matrice ottenuta: numeri da uno a nove per le caselle occupate, zero per le altre.

Se i dati iniziali non sono accettabili, scatta la procedura verifica, il programma principale viene interrotto e nel video si leggono i valori trovati fino a quel momento.

 

 

Implementazione in Turbo Pascal

 

  program sudoku;   {per TPW uses wincrt}

  var a,b,c,mcd,a1,b1,c1,m,novo:extended; S,DS,SD,T,TS,TDS:

  array[1..9,1..9] of extended; LI: array[1..9] of extended;

  EX: array[1..9] of integer;

  dd,i,j,h,k,ks,l,n,sk,skk,ski,skf,tp,u,x: integer;

  const pr: array[1..9] of extended =(5,7,11,13,17,19,23,29,31);

  procedure trasponi;

  var u,v:integer;

  begin

  for u:=1 to 9 do   for v:=1 to 9 do

  begin

  TS[u,v]:=S[v,u]; TDS[u,v]:=DS[v,u]

  end;

  for u:=1 to 9 do   for v:=1 to 9 do

  begin

  S[u,v]:=TS[u,v]; DS[u,v]:=TDS[u,v]

  end

  end;

  procedure maxdiv;

  begin

  a:= a1 ; b:= b1; c:= c1;  mcd:= a -int(a/b)*b;

  repeat

  if mcd = 0  then  mcd:= b  else

  begin

  a := b ; b := mcd ;   mcd := a -int(a/b)*b

  end

  until (mcd = 0 );

  mcd := b;  mcd := c -int(c/b)*b ;

  repeat

  if mcd = 0 then mcd:= b else

  begin

  c := b ; b := mcd ; mcd := c -int(c/b)*b

  end

  until (mcd = 0 );

  mcd := b

  end;

  procedure vuote;

  var x,y : integer;

  begin

  sk:= 0;

  for x:= 1 to 9 do  for y:= 1 to 9 do  if (s[x,y] = 1 ) then sk := sk+1

  end;

  procedure verifica;

  var u,v,w,z,t,y,x: integer;

  begin

  writeln('Sudoku mal impostato quindi privo di soluzione');

  vuote; writeln('mancano ',sk,' numeri'); writeln;

  for u := 1 to 9 do    for v := 1 to 9 do

  if ((S[u,v] = 1) and (SD[u,v] = 1)) then

  begin

  if (tp = 1) then writeln('riga ',u,' col ',v,' mancano candidati');

  if (tp = -1) then writeln('riga ',v,' col ',u,' mancano candidati'); writeln

  end;

  for z:= 1 to 2 do

  begin

  for w:=1 to 9 do    for u:=1 to 8 do    for v:=u+1 to 9 do

  if (S[w,u] = S[w,v]) and (S[w,v] <> 1) then

  begin

  if (tp = 1 ) then writeln('valore duplicato in riga  ',w);

  if (tp = -1) then writeln('valore duplicato in colonna  ',w);

  end;

  trasponi; tp:= -tp

  end;

  for z := 1 to 3 do   for y := 1 to 3 do

  begin

  t := 1 ;

  for v := 1 to 3 do   for w := 1 to 3 do

  begin

  LI[t] := S[3*(z-1)+v,3*(y-1)+w]; t:= t+1

  end;

  for t := 1 to 8 do   for w := t+1 to 9 do

  if (LI[t] = LI[w]) and (LI[w] <> 1)  then

  begin

  if (tp = 1 ) then writeln('valore duplicato riquadro ',z,' ',y);

  if (tp = -1) then writeln('valore duplicato riquadro ',y,' ',z)

  end

  end

  end;

  procedure aggiorna;

  var h1,k1,i1,j1: integer;

  begin

  skk := 1; vuote; writeln;

  while ( skk > 0) and (sk > 3 ) and (dd = 2) do

  begin

  skk := 0;

  for h1:= 1 to 3 do   for k1:=1 to 3  do

  begin

  h:= 3*h1 - 2 ; k := 3*k1 - 2;

  c1:=m/(s[h,k]*s[h,k+1]*s[h,k+2]*s[h+1,k]*s[h

+1,k+1]*s[h+1,k+2]*s[h+2,k]*s[h+2,k+1]*s[h+2,k+2]);

  for i1:= 1 to 3 do  for j1 := 1 to 3 do

  begin

  i := 3*(h1 -1)+ i1 ; j := 3*(k1-1)+ j1 ;

  if (s[i,j] = 1) then

  begin

  a1 := m/(s[i,1]*s[i,2]*s[i,3]*s[i,4]*s[i,5]*s[i,6]*s[i,7]*s[i,8]*s[i,9]);

  b1 := m/(s[1,j]*s[2,j]*s[3,j]*s[4,j]*s[5,j]*s[6,j]*s[7,j]*s[8,j]*s[9,j]);

  if (a1<>int(a1))or(b1 <> int(b1))or(c1<>int(c1)) then dd := 1 ;

  maxdiv;

  if (mcd = 1) then

  begin

  if (mcd = 1) and (tp = 1) then SD[i,j] := 1 ;

  if (mcd = 1) and (tp = -1 ) then SD[j,i] := 1;

  dd := 1

  end    else

  begin

  if (mcd < 32) and (mcd > 4) then

  begin

  s[i,j]:= mcd; ds[i,j] := 1; skk := skk +1 ;

  if (tp = 1 ) then writeln('AGGIORNA ',i,' ',j,' ',mcd);

  if (tp = -1) then writeln('AGGIORNA ',j,' ',i,' ',mcd);readln

  end  

  else   ds[i,j] := mcd

  end

  end

  end

  end

  end

  end;

  procedure linea(z:integer) ;

  var v,t:integer;

  begin

  for v:=1 to 9 do    EX[v] :=  0 ;

  for v:= 1 to 9 do  if ( DS[z,v] > 31 ) then

  for t := 1 to 9 do

  if (int(DS[z,v]/pr[t])*pr[t]=DS[z,v]) then EX[t] := EX[t] +1 ;

  for t:= 1 to 9 do   if (EX[t] = 1)  then

  begin

  novo := pr[t];

  for v:= 1  to 9 do

  begin

  if (int(DS[z,v]/novo)*novo = DS[z,v]) and (DS[z,v] > 31) then

  begin

  S[z,v]:= novo ; DS[z,v]:= 1; ks:= ks+1;

  if (tp = 1 ) then writeln('RIGA  ',z,'  ',v,'  ',novo);

  if (tp = -1) then writeln('COLONNA ',v,' ',z,' ',novo);  readln

  end

  end

  end

  end;

  procedure riquadro(z,y:integer) ;

  var v,t,w :integer; novo: extended;

  begin

  for v:=1 to 9 do    EX[v] :=  0 ;

  for v:= 1 to 3 do  for w:=1 to 3 do

  if (ds[3*(z-1)+v,3*(y-1)+w]>31) then

  for t:=1 to 9 do

  if(int(ds[3*(z-1)+v,3*(y-1)+w]/pr[t])*pr[t]= ds[3*(z-1)+v,3*(y-1)+w]) then  EX[t] := EX[t] +1 ;

  for t:= 1 to 9 do  if (EX[t] = 1)  then

  begin

  novo := pr[t];

  for v:= 1 to 3 do   for w:= 1 to 3 do

  begin

  if (int(ds[3*(z-1)+v,3*(y-1)+w]/novo)*novo=ds[3*(z-1)+v,3*(y-1)+w]) and  (DS[3*(z-1)+v,3*(y-1)+w] > 31) then

  begin

  S[3*(z-1)+v,3*(y-1)+w] := novo ; dS[3*(z-1)+v,3*(y-1)+w] := 1; ks:= ks+1;

  if (tp = 1) then writeln('RIQUADRO ',3*(z-1)+v,' ',3*(y-1)+w,' ',novo);

  if (tp = -1) then writeln('RIQUADRO ',3*(y-1)+w,' ',3*(z-1)+v,' ',novo);  readln

  end

  end

  end

  end;

begin

   writeln('SOLUZIONE DI UN SUDOKU'); writeln;

   writeln('ASSEGNA I DATI (0 SE MANCA)'); writeln;

   for i:= 1 to 9 do

   begin

   writeln('ASSEGNA LA RIGA  ',i);

   for j:= 1 to 9 do

   begin

   readln(t[i,j]) ;

   if (t[i,j]< 0) or (t[i,j]> 9) or (int(t[i,j]) <> t[i,j]) then

   writeln('DATO NON ACCETTABILE, PREMERE A')

   end

   end;

   writeln;writeln('PER CONTINUARE PREMERE SEMPRE INVIO');readln;

   for i := 1 to 9 do   for j := 1 to 9 do

   begin

   if ( t[i,j] = 0 ) then s[i,j] := 1 ;   if ( t[i,j] = 1 ) then s[i,j] := 5 ;

   if ( t[i,j] = 2 ) then s[i,j] := 7 ;   if ( t[i,j] = 3 ) then s[i,j] := 11 ;

   if ( t[i,j] = 4 ) then s[i,j] := 13 ;  if ( t[i,j] = 5 ) then s[i,j] := 17 ;

   if ( t[i,j] = 6 ) then s[i,j] := 19 ;   if ( t[i,j] = 7 ) then s[i,j] := 23 ;

   if ( t[i,j] = 8 ) then s[i,j] := 29 ;   if ( t[i,j] = 9 ) then s[i,j] := 31 ;

   ds[i,j] := 1 ; sd[i,j] := 2

   end;

   m:= 5.0*7*11*13*17*19*23*29*31 ;  tp := 1;  dd := 2; vuote;

   while ((dd > 1) and (sk > 3)) do

   begin

   vuote;  ski := sk;  writeln('MANCANO  ',sk,'  VALORI');

   repeat

   vuote ;ski:= sk; aggiorna;

   if (dd > 1)  then for i:= 1 to 9 do  linea (i);

   aggiorna; trasponi; tp := -tp;

   if (dd > 1) then for i := 1 to 9 do linea(i);

   aggiorna; trasponi; tp := -tp;

   if (dd > 1 ) then for i := 1 to 3 do  for j := 1 to 3 do riquadro(i,j);

   vuote;  skf := sk

   until (ski = skf)

   end;

   if ((sk<2) and (dd=2)) then writeln('SUDOKU di livello1^');

   if ((sk>2) and (dd = 2))  then

  writeln('SUDOKU non di livello 1^ o soluzioni multiple');

   if ((sk > 2) and (dd=2)) then

   begin

   vuote;

   writeln('SUDOKU non completo mancano ',sk,' ELEMENTI')

   end;

   if (tp = -1) then trasponi ;

   if (tp = -1) then tp := -tp ;   if ( dd = 1 ) then verifica ;

   writeln('MATRICE FINALE PER RIGHE');

   for i := 1 to 9 do  for j := 1 to 9 do

   begin

   if ( s[i,j] = 5 )  then t[i,j] := 1 ;  if ( s[i,j] = 7 )  then t[i,j] := 2 ;

   if ( s[i,j] = 11 ) then t[i,j] := 3 ;  if ( s[i,j] = 13 ) then t[i,j] := 4 ;

   if ( s[i,j] = 17 ) then t[i,j] := 5 ;  if ( s[i,j] = 19 ) then t[i,j] := 6 ;

   if ( s[i,j] = 23 ) then t[i,j] := 7 ;   if ( s[i,j] = 29 ) then t[i,j] := 8 ;

   if ( s[i,j] = 31 ) then t[i,j] := 9

   end;   writeln;

   for i:= 1 to 9 do

   begin

   writeln(t[i,1]:2:0,' ',t[i,2]:2:0,' ',t[i,3]:2:0,' ',t[i,4]:2:0,' ',t[i,5]:2:0,' ',t[i,6]:2:0);

   writeln(t[i,7]:2:0,' ',t[i,8]:2:0,' ',t[i,9]:2:0);   writeln;   readln

   end;

   writeln('FINE ELABORAZIONE'); readln

   end.

 

 

Fonte : www.liceoxxv.it/didattica1/didattica/Zamburlini

Anche se esistono sudoku mini e maxi da 16 e 256 caselle, faremo riferimento solo al più diffuso di 81 caselle.

In Pascal ed Excel è la funzione int(x): per es. int(1/3) = 0, int(5/3) = 1, int(6/3)= 2.

Non risulta particolarmente impegnativo, nell’implementazione, passare dai valori 1,..,9 ai p1,  , p9 e viceversa.

Vedi: en.wikipedia.org/wiki/sudoku: Puzzles which can be solved by (basic) scanning alone … are classified as “easy” puzzles

In caso di soluzioni multiple, le caselle interessate sono almeno 4, altrimenti la loro assegnazione è assicurata da aggiorna.

 

  • Fine articolo Sudoku tutto di tutto

 

Wayne Gould, giudice in pensione neozelandese, ha inventato
un software che moltiplica all'infinito il gioco. E si è arricchito
Mr Sudoku e il rompicapo
che "sopravviverà alla moda"

di STEFANO BARTEZZAGHI

Da www.repubblica.it

Chi scopre una nuova specie di farfalle ha diritto a darle il nome, ma l'America prende nome da Vespucci e non da Colombo. Nel caso del sudoku, il geniale rompicapo che da un anno appare sui giornali di tutto il mondo, chi l'ha inventato non gli ha dato il nome, e chi gli ha dato il nome non lo ha portato al successo. Nella sua versione standard il sudoku è una griglia quadrata di nove caselle per nove, divisa in nove settori. Tenuto conto di alcuni numeri già stampati nella griglia, il solutore deve riempirla in modo che in ogni riga, in ogni colonna e in ogni settore compaiano tutti i numeri da uno a nove, senza ripetizioni. Un bel puzzle, come in inglese si chiamano tutti i rompicapo (dal cruciverba ai quiz matematici, fino al gioco delle tessere che in italiano detiene l'esclusiva del nome di puzzle).

È un rompicapo la stessa vicenda del sudoku. Sembra immaginata dal romanziere e grande appassionato di giochi Georges Perec: coinvolge la storia della matematica, giornali ed enigmisti di quattro continenti ma ha la sua scena culminante quando un magistrato neozelandese in pensione, già appassionato di cruciverba a trabocchetto (come quelli appunto di Perec), di crittologia militare e di programmazione di computer entra in una libreria a Tokyo. Ama i libri, non conosce il giapponese, acquista l'unico libro che contiene pochi ideogrammi e molti numeri: per il sudoku, praticamente, era fatta.

Questo notevole personaggio si chiama Wayne Gould, e sta per arrivare in Italia in occasione del primo campionato mondiale di Sudoku (che si terrà a Lucca dal 10 al 12 marzo) e per promuovere i suoi libri (tutti pubblicati da Fandango Libri, compreso l'ultimo: La grande sfida del Fandango Sudoku, pagg. 150, 7 euro): "Sono nato in Nuova Zelanda, nel 1945. Ho studiato legge, ho fatto il tirocinio di avvocato, ho praticato in uno studio di Matamata, in Nuova Zelanda, per tredici anni. Nel 1982 mi sono trasferito ad Hong Kong, dove ho fatto il magistrato, fino a diventare capo del distretto giudiziario nel 1993. Ho smesso di celebrare processi a cinquantun anni, nel 1997, subito prima del ritorno di Hong Kong alla sovranità cinese. Da quel momento, beatamente disoccupato, mi sono messo a fare quel che mi piaceva: fra l'altro a inventare programmi per computer, per mio divertimento ma a volte anche con qualche profitto economico".

Essendo sposato con una linguista che insegna in un'università americana, nel New Hampshire, e avendo una figlia che lavora in televisione a Londra e un figlio che progetta e gestisce siti Internet in Nuova Zelanda, Wayne Gould non passa molto tempo nella sua casa di Hong Kong. È un uomo fortunato: "Per le vacanze abbiamo una casa in Thailandia: il 26 dicembre del 2004 siamo partiti di lì cinque ore prima dello tsunami".

È sempre stato un appassionato di giochi? "Giochi e rompicapo mi sono sempre piaciuti. In particolare la variante inglese e criptica del cruciverba. Da studente ho composto qualche cruciverba all'inglese, e me lo hanno anche pagato". Qui bisogna sapere che il cruciverba in Inghilterra non è mai davvero attecchito finché un enigmista che avrebbe sintomaticamente scelto lo pseudonimo di Torquemada non ha inventato le cryptic clue, definizioni criptiche, a trabocchetto, che in italiano non usano molto e di cui l'esempio preclaro resta: "Un'importante città in Cecoslovacchia", soluzione Oslo (poiché Oslo si legge nella parola CecOSLOvacchia). Un esempio proprio di Georges Perec è: "È sempre tra due fuochi". Soluzione: orange (il giallo dei semafori: le luci dei semafori in francese si chiamano infatti "fuochi"). "Amo molto", riprende Gould, "anche la crittologia, più come rompicapo che come arte militare".

Queste propensioni enigmistiche e il dettaglio sulla crittologia servono per spiegare bene cosa è successo in quella libreria: "Potevo acquistare solo quel libro, non so il giapponese: e così ho visto e risolto il mio primo sudoku". Gould non poteva leggere le didascalie giapponesi con la spiegazione del gioco, e quindi per risolvere quel primo sudoku ha dovuto indovinare, prima della soluzione, le regole stesse del gioco. Non deve essere stato uno scherzo, ma appunto l'inclinazione per l'enigmistica, la crittoanalisi e la logica dei computer avrà aiutato, spingendo poi Gould a porsi un altro problema.

<B>Mr Sudoku e il rompicapo<br>che 'sopravviverà alla moda'</B>


Chi si diletta di informatica è sempre in cerca di occasioni per far fare al computer qualcosa di nuovo, e il magistrato in pensione sfidò se stesso a costruire un software per produrre sudoku. Ci sono voluti sette anni di tentativi e approssimazioni: "È stato molto difficile portare il mio programma a un soddisfacente livello di perfezione. Però ce l'ho fatta, e ancora oggi il mio programma è il più affidabile di tutti". Ma non c'è differenza tra un sudoku preparato da un autore e uno composto da un computer? Il punto è molto controverso fra gli esperti, ma l'opinione di Gould è netta: "No, non c'è nessuna differenza. La casa giapponese Nikoli produce sudoku fatti "a mano" di alta qualità. Ma quando si afferma che i sudoku fatti a mano sono migliori di quelli fatti al computer è solo per ragioni di marketing. Casomai la differenza è che con un sudoku composto da un computer puoi essere davvero certo che soddisfi gli standard di qualità. Per un periodo la Pepsi Cola aveva organizzato la famosa Pepsi challenge, una sfida al consumatore per dimostrare che la Pepsi era meglio della Coca Cola. Io ho lanciato una Pepsi challenge sul sudoku: dare a dieci solutori dieci sudoku miei e dieci sudoku artigianali, e vedere se erano in grado di distinguere quelli fatti al computer. Sono sicuro che sia impossibile notare differenze". Qualcuno ha mai raccolto la sfida? "No nessuno".

Quando il sudoku è arrivato in Italia, autori e solutori hanno discusso su sudoku "aperti" e "chiusi". Un sudoku "aperto" ammette più di una soluzione, e impone al solutore di tirare a indovinare senza poter procedere solo sulla base della logica. La maggior parte degli esperti considera legittimi solo i sudoku "chiusi", che hanno una sola soluzione possibile. Anche in questo caso Gould non ha esitazioni: "Un sudoku deve avere una e una sola soluzione. Il mio programma assicura che la soluzione sia unica e che ogni puzzle possa essere risolto facendo ricorso solo alla logica. Non devi mai tirare a indovinare, con i miei sudoku: se vuoi, però, puoi farlo".

Prima che Gould lo scoprisse, il sudoku aveva vivacchiato. Remota conseguenza delle riflessioni che il matematico svizzero Eulero aveva condotto nel Settecento sui "quadrati magici" (noti sin dall'antichità, in Cina), il sudoku prese una forma abbastanza simile all'attuale attorno al 1975 in una rivista di puzzle di New York, con il nome di Number place. Restò una curiosità per appassionati, e poi ricomparve in Giappone, dove Nobuhiko Kanamoto, dell'editrice Nikoli, lo reinventò, lo perfezionò, lo brevettò (ahilui, solo per il Giappone) e lo propose al pubblico dall'aprile del 1984 con il nome di Sûji wa dokushin ni kagiru, che con un ragionevole sfrondamento di sillabe è poi diventato sudoku ("i numeri devono comparire una sola volta", concetto espresso con un ideogramma che significa "celibi").

Cosa ci ha messo Gould? L'idea di far comporre i sudoku dal computer, idea che definisce "pionieristica" (malgrado tutti gli stereotipi sui giapponesi, a Tokyo non l'avevano ancora avuta): "Con il metodo artigianale non c'era modo di fare avere al sudoku la diffusione che merita". Messo a punto il software Gould è andato a Londra, alla sede del Times. Era l'autunno del 2004. La leggenda dice che a Gould fu concesso un minuto per spiegare il sudoku, e che nel giro di mezza giornata ricevette un'e-mail con la sentenza del giornale: incominciamo la pubblicazione fra due settimane. "A decidere li ha aiutati il fatto che io fornisco i sudoku gratis, come conviene a me, ai giornali e ai lettori: a tutti". Gratis? "Sì, gratis. I soldi li faccio vendendo il mio programma e con i diritti d'autore dei miei libri".

Un neozelandese scopre in Giappone un gioco di origini americane e lo propone a un quotidiano inglese. L'imprinting globale è chiaro. Coerentemente il sudoku ha successo sul Times, ha successo sugli altri giornali inglesi che lo copiano, ha successo negli Stati Uniti e in tutta Europa, e con la sua diffusione stimola i riflessi tipici di un'etologia molto standard: i solutori che si appassionano, i modaioli che si entusiasmano, gli intellettuali che si incuriosiscono, gli snob che snobbano, le edicole che tracimano, i televisivi che ciurlano, i diffidenti che diffidano, le tirature che parlano chiaro. "Oggi i miei sudoku sono stampati su quattrocento giornali, in cinquantotto nazioni diverse. I miei libri escono in ventinove lingue diverse". Quindi per lei il sudoku non ha finito la sua corsa... "Il sudoku si sta espandendo tuttora. Come è ovvio la mania passa. Deve passare! Non può andare avanti molto a lungo! Negli anni Venti e Trenta c'è stata un'analoga mania per il cruciverba, poi è passata ma il cruciverba è ancora qui. Io penso che il sudoku resterà qui a lungo. Probabilmente per sempre. Sudoku e cruciverba coesisteranno in tutti i giornali seri".

L'analogia con il cruciverba viene immediata. Il grande esperto americano Will Shortz definisce il sudoku come wordless crossword "parole crociate senza parole". Tutta logica, niente semantica. Gould precisa: "Il cruciverba è un test su quel che sai, il sudoku è un test su come pensi. Da questo punto di vista è più "puro" del cruciverba: il sudoku non richiede di conoscere molte parole, o dare un'occhiata a un dizionario, o ricorrere a scaffali colmi di opere di consultazione. Ci sei solo tu e la griglia del puzzle".

Oggi il sudoku compare su quotidiani, libri, riviste enigmistiche e su Internet. Qual è il suo medium migliore, secondo lei? "Ma naturalmente il mio sito, www.sudoku.com! È il sito originale, e nel forum dei giocatori si trovano tutte le ultime teorie e le scoperte più aggiornate sul sudoku. Si possono risolvere i sudoku direttamente sul computer o stamparli per risolverli su carta. Io preferisco la prima strada. Ciò non vuol dire che faccio risolvere il sudoku al computer: io mi concentro sulla soluzione e lascio al computer i compiti logistici".

Il sudoku è un fenomeno unico o è il primo di una serie di giochi? "Come il cruciverba ha spinto al successo altri giochi con le parole, sono convinto che il sudoku sia il primo frutto di una stagione di nuovi rompicapo logici".

(5 marzo 2006)

 

Fine articolo sul Sudoku

 

SUDOKU

 

Un altro antenato del Sudoku è il quadrato magico ritrovato a Pompei,noto come “Latercolo Pompeano”

sudokusudoku

Ora dopo tanti secoli i quadrati magici ritornano d’attualità, rilanciati con il nome di Sudoku un gioco che rappresenta un ottimo allenamento matematico,non di calcolo,ma di ragionamento e di intuizione.

 

 

I Sudokulisti sono milioni

 

 

Notizie del gioco compaiono su di una rivista americana del 1979, ma solo nel 1984 la Nikoli, casa editrice Giapponese specializzata in giochi, lo lanciò sul mercato.

Il successo è arrivato solo in questi ultimi anni, prima in Giappone poi in Gran Bretagna e quindi in tutto il mondo; è stato Wayne Gould, giudice neozelandese in pensione che vive ad Hong – Kong ad introdurre il gioco in Europa. In Italia è arrivato il 25 giugno 2005 pubblicato dal “Corriere della Sera” ed è diventato subito un appuntamento seguito da milioni di lettori.In quotidiani, riviste, siti internet, televisione è iniziata la moda del Sudoku.

 

 

Altri suggerimenti per risolvere i Sudoku

 

 

Ora che siamo diventati bravi passiamo a cimentarci nella risoluzione di Sudoku sempre più difficili.

Ecco alcuni suggerimenti utili:

Tecnica ZONE PROIBITE

sudokusudoku

 

Uno schema in cui si sta cercando il numero 6.Questa tecnica da sola non è sufficiente a risolvere completamente un Sudoku (a meno che non sia molto facile),ma è un valido complemento nella risoluzione di tutti gli schemi,e accelera di molto la ricerca della soluzione.Si tratta di esaminare la disposizione di uno dei numeri nelle varie regioni per controllare se, in regioni dove non è presente, impedisce tutte le altre posizioni meno 1, che quindi deve essere quella giusta per quel numero.

In figura accanto si riporta un esempio per il numero 6: i tre 6 considerati (in giallo) impediscono la presenza d’altri 6 nelle caselle vuote evidenziate in bianco. Nella regione centrale a sinistra rimane una sola casella “permessa” per il numero 6 (evidenziata in verde) e poiché deve esistere un 6 per ogni regione, si deduce che il numero 6 in quella regione è proprio lì

 

 

 

COME ORGANIZZARE UN PICCOLO TORNEO DI SUDOKU IN UNA CLASSE DI 20 ALUNNI?

 

Si scelgono 10 griglie di sudoku di difficoltà media e si distribuiscono ai 20 alunni divisi per coppie. In un tempo massimo di 30 minuti la prova dovrà essere terminata, a ciascun concorrente sarà attribuito un punto per ogni numero correttamente inserito nello schema di gioco (i punteggi possono essere segnati in una colonna alla destra dello schema) comprese le cifre prestampate.         

Si precisa che, in qualsiasi momento della prova i concorrenti possono chiamare “Sudoku” se ritengono di aver completato correttamente lo schema di gioco. La chiamata Sudoku aggiudica la vittoria al giocatore, ma se la griglia non e’ stata riempita correttamente costa una penalita’. Uno schema completato in modo corretto aggiudica un punteggio totale di 81 punti. Nella coppia di alunni, passa il turno quello che ha totalizzato il punteggio più alto. Si proseguirà con lo stesso schema per i rimanenti dieci alunni che diverranno poi cinque; a questi si potrà aggiungere il primo degli eliminati in modo da raggiungere un numero di giocatori pari a sei. Per eliminazione, i giocatori diventeranno tre i primi risolveranno un Sudoku d’alto livello di difficoltà. Vincerà il torneo quello dei tre che avrà totalizzato il maggiore punteggio. Tale torneo potrà essere allargato a tutta la scuola. E adesso….divertiti !!!

 

 

 

 

sudoku

 

 

sudoku

 

 

 

 

sudoku

Soluzioni

 

sudokusudokusudoku

sudokusudokusudoku+

 

 

 

Questo progetto è stato realizzato dagli

alunni della 2° e 3° C della scuola media

statale G.B.Basile. Anno scolastico

2005/2006. Con la collaborazione dei

docenti:

G. Bonavoglia

F. Tesone

 

Fine articolo sul Sudoku

 

 

Sudoku tutto di tutto

 

Collegamenti utili gratuiti

 

Disclaimer : gli obiettivi di questo sito sono il progresso delle scienze e delle arti utili in quanto pensiamo che siano molto importanti per il nostro paese i benefici sociali e culturali della libera diffusione di informazioni utili. Tutte le informazioni e le immagini contenute in questo sito vengono qui utilizzate esclusivamente a scopi didattici, conoscitivi e divulgativi. Le informazioni di medicina e salute contenute nel sito sono di natura generale ed a scopo puramente divulgativo e per questo motivo non possono sostituire in alcun caso il consiglio di un medico (ovvero un soggetto abilitato legalmente alla professione). In questo sito abbiamo fatto ogni sforzo per garantire l'accuratezza dei tools, calcolatori e delle informazioni, non possiamo dare una garanzia o essere ritenuti responsabili per eventuali errori che sono stati fatti, i testi contenuti nel sito sono di proprietà dei rispettivi autori. Se trovate un errore su questo sito o se trovate un testo o tool che possa violare le leggi vigenti in materia di diritti di autore, comunicatecelo via e-mail e noi provvederemo tempestivamente a rimuoverlo.

 

 


 

Sudoku tutto di tutto