Carlo (Member)
Guru
Messaggi: 1344
Iscritto: 29/01/2018
|
Questa volta la grafica è volutamente spartana.
In questo programma chi la fa da padrone è l'algoritmo ricorsivo che con 5 righe di codice risolve le Torri di Hanoi, e lo fa con il minor numero di mosse possibili.
L'algoritmo è stato scritto da Michele in C++ ed è reperibile su: http://www.pierotofy.it/pages/sorgenti/dettagli/18861-Le_t ...
Quando l'ho visto sono rimasto colpito dalla sua eleganza, la sua semplicità e la sua crudeltà verso la CPU!
Una cosa così bella non poteva restare solo in una finestra dos, doveva mostrare graficamente quello che generava.
Ho costruito un'interfaccia in Vb .NET e tradotto l'algoritmo:
Codice sorgente - presumibilmente VB.NET |
Public Sub hanoi(ByVal dischiDaMuovere As Integer, ByVal palettoIniziale As Integer, ByVal palettoFinale As Integer, ByVal palettoTemporaneo As Integer) ' sposto i dischi dal paletto 1 al 2 con il paletto 3 temporaneo If dischiDaMuovere > 1 Then hanoi(dischiDaMuovere - 1, palettoIniziale, palettoTemporaneo, palettoFinale) End If ' Qui in palettoIniziale e palettoFinale la mossa trovata ' io l'ho caricata in una ListBox con: ListBox1.Items.Add(palettoIniziale & " su " & palettoFinale) ' sposto i dischi dal paletto 2 al 3 con il paletto 1 temporaneo If dischiDaMuovere > 1 Then hanoi(dischiDaMuovere - 1, palettoTemporaneo, palettoFinale, palettoIniziale) End If End Sub
|
Ma come ha fatto Michele a pensare una cosa del genere???
Il programma è impostato per risolvere torri da 1 a 24 dischi, non è pensato per giocare, anche se ci sono i tastini per spostare i dischi manualmente, ma per vedere, anche passo passo, come spostare correttamente la torre dal paletto 1 al paletto 3 o 2.
Come si sa, gli algoritmi ricorsivi, sono le bestie nere delle CPU, nel mio portatile con 2Gb di ram la torre da 24 dischi dopo 2 ore e mezzo ha generato un errore di memoria piena, sicuramente la ListBox non poteva contenere altri dati, le mosse generate fino a quel momento erano 12747834.
Graditi report con PC più performanti.
Ultima modifica effettuata da Carlo il 28/03/2018 alle 15:52
in programmazione tutto è permesso |