Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Le Torri di Hanoi Risolte - Le Torri di Hanoi Risolte

Le Torri di Hanoi Risolte

Sommario | Admin | Forum | Bugs | Todo | Files

Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 6:50
Venerdì, 23/03/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

  1. Public Sub hanoi(ByVal dischiDaMuovere As Integer, ByVal palettoIniziale As Integer, ByVal palettoFinale As Integer, ByVal palettoTemporaneo As Integer)
  2.  
  3.         ' sposto i dischi dal paletto 1 al 2 con il paletto 3 temporaneo
  4.  
  5.         If dischiDaMuovere > 1 Then
  6.             hanoi(dischiDaMuovere - 1, palettoIniziale, palettoTemporaneo, palettoFinale)
  7.         End If
  8.  
  9.         ' Qui in palettoIniziale e palettoFinale la mossa trovata
  10.         ' io l'ho caricata in una ListBox con:
  11.         ListBox1.Items.Add(palettoIniziale & " su " & palettoFinale)
  12.  
  13.         ' sposto i dischi dal paletto 2 al 3 con il paletto 1 temporaneo
  14.  
  15.         If dischiDaMuovere > 1 Then
  16.             hanoi(dischiDaMuovere - 1, palettoTemporaneo, palettoFinale, palettoIniziale)
  17.         End If
  18.  
  19.     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.


Carlo ha allegato un file: Torri_di_Hanoi_eseguibile.zip (12465 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da Carlo il 28/03/2018 alle 15:52


in programmazione tutto è permesso
PM Quote