Il blog di Gianni Giaccaglini

Blog su VBA e VSTO
Gianni Giaccaglini

My Links

News

NB - V. anche gli ARTICOLI (in fondo a questa barra)
Solo quesiti validi a: giannigiac@tin.it
Il mio Best seller su VBA
(v. www.hoepli.it)


Il mio ultimo libro su Open XML
(v. www.FAG.it):



La mia nipotina ELISA

Foto con dedica a ME di
Bill Gates giovanissimo
nei mitici anni 80!

Categorie Post

Categorie Articoli

Archivio

Immagini

Blog Stats

Torri di Hanoi, gestite con due modelli Excel (uno mio, l'altro di A. Terzaghi)

Tutti dovrebbero conoscere il problema delle Torri di Hanoi, costituito da anelli (o dischi, fate vobis) di dimensioni decrescenti infilati su tre piolo o pali (fate vobis, anche qui) che si debbono trasferire da un piolo all'altro rispettando il divieto di sovrapporre un anello maggiore a quello in cima a ciascuna torre. L'obiettivo finale è il trasferimento completo degli anelli da una torre a un'altra.

Chi scrive già in passato aveva realizzato un modello per Excel - Torri_di_Hanoy.xls - inteso come giochino interattivo. L'interesse di tale modello, ai fino programmatorii VBA, consiste nello sfruttamento alquanto astuto degli eventi BeforeDoubleClick e SelectionChange dell'oggetto Worksheet: col primo vengono selezionate le celle dell'anello top di una torre, col secondo l'anello viene spostato nel piolo destinatario. Un secondo foglio reca un chiaro Help che riassume quel che ho appena detto, con tanto di immagine incollata, per cui non mi dilungo con altre note.

Recentemente ho arricchito il modello con un terzo foglio, che esibisce animazioni relative al medesimo problema, anche qui in modo evidente. Rimaneva aperta una questione: l'implementazione da me adottata, per tale terzo foglio, era di tipo iterativo (e, onestamente, non troppo generalizzabile) mentre tutti o quasi sanno che esiste una classica soluzione ricorsiva. Così mi sono rivolto al collega blogger Andrea Terzaghi (v. anche www.terzaghi.it, oltre che nel blog di Andrea su questo sito) che di tecniche ricorsive è maestro. Immediata la risposta, con un suo modello ricorsivo al 100%, semplice e apprezzabile.

Il modello di Andrea Terzaghi si può scaricare dal link seguente:
http://www.terzaghi.it/dl/dlc.php?id=HanoiByTerzaghi.zip

Il mio, invece, è attingibile da:

http://bloggianni.altervista.org/Torri_di_Hanoi.xls

In entrambi i casi il codice macro, avanzato anzichenò, è dedicato agli Excelliani più esperti, pertanto mi astengo da commenti, un po' perché sarebbero troppo lunghi, dico solo che le macro del Terzaghi si trovano in un Modulo1, mentre quelle del mio lavoretto si trovano rispettivamente nel modulo Foglio1 relativo al gioco sul primo foglio di lavoro e in un Modulo1, relativo al foglio "SoluzAnimata"


Sfida per abilissimi: provate a sfruttare l'idea del Terzaghi al codice del mio modello relativa al foglio "SoluzAnimata", in modo cioè che l'animazione avvenga in virtù della ricorsività. O, almeno, con un procedimento iterativo più generalizzabile e compatto del mio. Se ci riuscite, interpellatemi a ggiaccaglini@msn.com. Avverto subito che risponderò a eventuali richiesta di chiarimenti solo se interessanti e che NON comportino lezioni o sviluppi impegnativi, in compenso, la prima soluzione valida di questa sfida lapubblicherei volentieri su questo blog.


Per la pigrizia suaccennata al momento non inserisco figure. Lo farò (forse) appena ho un po' di tempo. Comunque come ripeto entrambi i modelli sono auto-esplicativi.

Have fun! Divertitevi!

 

posted on venerdì 19 gennaio 2007 13.13