Implementiamo la soluzione del problema della Torre di Hanoi con WeBots

Oggi, nel nostro corso di programmazione in linguaggio C, ho deciso di mettere un po’ da parte la teoria per affrontare un problema classico: la Torre di Hanoi [00:06]. Questo problema, che consiste nello spostare un certo numero di dischi di dimensioni diverse da un piolo all’altro, seguendo regole specifiche: spostare un solo disco alla volta e non posizionare mai un disco più grande su uno più piccolo [01:36].

Abbiamo discusso come, dal punto di vista algoritmico, la Torre di Hanoi si presti particolarmente bene a una soluzione ricorsiva, che risulta molto più elegante e immediata rispetto a una iterativa [02:43]. Abbiamo poi delineato l’approccio ricorsivo, suddividendo il problema in sottoproblemi più semplici fino a raggiungere un caso base [02:59].

Successivamente, abbiamo iniziato a scrivere il codice in C utilizzando un ambiente di sviluppo online, definendo una funzione ricorsiva hanoi che gestisce lo spostamento dei dischi tra i pioli di partenza, destinazione e temporaneo [07:08]. Abbiamo implementato il caso base, ovvero quando c’è un solo disco da spostare, e le chiamate ricorsive per i casi più complessi [08:19].

Per rendere la soluzione più interessante e visiva, ho deciso di utilizzare Webots, un simulatore di robot open source e multipiattaforma [14:34]. Introduciamo Webots, spiegando come creare un nuovo progetto, definire un ambiente tridimensionale e aggiungere oggetti solidi come i nostri dischi [18:13]. Abbiamo personalizzato i dischi, assegnando loro dimensioni e colori diversi [23:05].

Abbiamo poi associato il nostro codice C a un “robot” virtuale in Webots, che funge da controller per animare gli oggetti nel mondo 3D [27:07]. Abbiamo visto come inizializzare gli oggetti e posizionarli correttamente sulla scacchiera virtuale [32:44].

Infine, abbiamo implementato la logica per lo spostamento dei dischi, tenendo conto delle loro posizioni e altezze, e abbiamo aggiornato una matrice interna per tenere traccia della disposizione dei dischi sui pioli [44:57]. Abbiamo anche aggiunto un ritardo tra gli spostamenti per rendere l’animazione più visibile [58:17]. Per un tocco finale, abbiamo implementato un’animazione parabolica per lo spostamento dei dischi, rendendo il tutto più accattivante [01:04:46].

Avatar Paolo Godino