Solución animada de las torres de Hanói en Java

Un programa escrito en Java haciendo uso de la librería Java 2D para dibujar las imágenes y para efectos de animación la clase Timer del paquete javax.swing. Animación que muestra la solución de las torres de Hanói de 1 hasta 8 fichas.

El objetivo como sabemos es trasladar todos los elementos de la torre 1 a la torre 3 moviendo una ficha a la vez y ponerla solo en el vacío o en otra ficha mayor.

hanoi1

El programa realiza la cantidad mínima de movimientos para la resolución de las torres de Hanói, si n es el numero de fichas la cantidad mínima de movimientos es 2n-1, por ejemplo si tenemos 8 fichas llegaremos a la solución en 255 movimientos.

hanoi2

Para la solución de las torres de Hanói para su posterior animación se utilizó el siguiente algoritmo recursivo.

public static void algoritmoHanoi(int n, int origen, int temporal, int destino) {  
    if (n == 0) {
        return;
    }
    algoritmoHanoi(n - 1, origen, destino, temporal);
    System.out.println("Mover " + n + " de la torre " + origen + " a la torre " + destino + ".");
    algoritmoHanoi(n - 1, temporal, origen, destino);
}

A continuación podemos descargar el proyecto completo, esperando siempre sus consultas y comentarios.

Cualquier duda puedes dejarla en los comentarios, muchas gracias por tu visita. Contarte también que publicamos videos de Firebase, Android y más en nuestro canal en YouTube, suscríbete para recibir novedades.

Daniel Alvarez

Software engineer, developer and producer of native mobile applications for Android and iOS, Angular, Firebase. Teacher. Speaker. Creating bots.