sábado, 9 de abril de 2011

Torres de Hanoi, juego online

Os proponemos un juego interesante que, además, crearemos nosotros íntegramente, se trata de las Torres de Hanoi.

Las Torres de Hanói, o Torres de Diamante, es un famoso rompecabezas que inventó Éduard Lucas en 1883. Su origen está vinculado a una leyenda india que cuenta como en el gran Templo de Benarés, bajo la cúpula que señala al centro del Mundo, reposa una bandeja de cobre sobre la que se erigen tres agujas de diámetro más fino que el aguijón de una abeja. En el momento de la creación, Brahma colocó en una de dichas agujas 64 discos de oro puro ordenados de mayor a menor. Incansablemente, día tras día, los sacerdotes del templo mueven los discos haciéndolos pasar de una aguja a otra de acuerdo con las leyes fijas e inmutables de Brahma, que dictan que el sacerdote en ejercicio no mueva más de un disco al día, ni lo sitúe encima de un disco de menor tamaño. El día en que los 64 discos hayan sido trasladados desde la primera aguja a cualquiera de las otras dos la Torre, el templo y, con gran estruendo, el Mundo desaparecerán.

Basándose en dicha leyenda, Éduard Lucas, creó un juego similar al que llamó las Torres de Hanoi. El juego está formado por tres varillas verticales y un número indeterminado de discos (que determinarán la complejidad del juego, a más discos mayor será la dificultad). Los discos, de diferente tamaño cada uno, se colocan de mayor tamaño (el de más abajo) o menor (el de más arriba) en la primera varilla. El juego consiste en pasar todos los discos a la tercera varilla, en el mismo orden decreciente y respetando tres reglas básicas:

1ª. Sólo se puede mover un disco en cada tirada (aunque no cada día como hacen los monjes).

2ª. Nunca podemos depositar un disco de mayor tamaño que su inmediatamente inferior, es decir, nunca puede haber un disco de menor diámetro bajo otro mayor.

3ª. Sólo se puede desplazar el disco que se encuentre en la parte superior de la varilla.


Este juego es un conocido problema matemático muy utilizado en iniciación a la teoría de algoritmos. Para calcular cuantos movimientos necesitamos para su resolución simplemente debemos aplicar la siguiente fórmula, 2n-1, siendo n el número de piezas utilizadas en nuestro caso.
Así nos encontraremos que el número mínimo de movimientos para resolver el acertijo es:
- Si usamos 2 piezas → 3 movimientos.
- Si usamos 3 piezas → 7 movimientos.
- Si usamos 4 piezas → 15 movimientos.
- Si usamos las 64 piezas de la leyenda → 264-1, es decir, 18.446.744.073.709.551.615 movimientos. A movimiento por día... me temo que ninguno veremos el fin del mundo. Si suponemos un movimiento al segundo, los 64 discos estarían en la tercera varilla en unos 585 mil millones de años (si la Tierra tiene unos 5 mil millones de años...).

Como vemos el número de movimientos crece exponencialmente según aumentamos el número de fichas. Es por eso que debes empezar con pocas e ir aumentando la dificultad según vayas logrando superar el reto.

La construcción del juego la realizaremos próximamente en el taller. Trabajaremos con madera siendo el resultado final algo similar a esto:



Existe una opción más simple de jugar con las Torres de Hanoi. Consiste en realizar tres cuadrados sobre una hoja. Cada cuadrado corresponderá a una varilla. Por otro lado crearemos cuadrados de cartón (o cualquier material que sea grueso para poder cogerlo con facilidad). Mi consejo es que pintéis dichos cuadrados para que os resulte más fácil asimilar las diferencias de tamaño, y que sus áreas sean suficientemente distintas para facilitar el desarrollo del juego. Por supuesto el número de cuadrados dependerá de la dificultad que le queráis dar a la partida. Una vez realizados estos pasos previos. Créais una torre con todos los cuadrados ordenados de mayor a menor sobre el primer cuadrado de la hoja de papel y listos para jugar.

Aplicación para jugar online gratis a las Torres de Hanoi encontrada en la web www.uterra.com por Elena. Pincha en la imagen:


En el siguiente video podéis ver una aplicación realizada en Phyton que permite solucionar y practicar el problema. Será una aplicación que veremos más adelante en programación básica en la asignatura de Informática.


En el siguiente enlace se muestra el código en Phyton por si alguien quiere indagar un poco más. También podéis ver el código en C++, Prolog, Java o C# en el siguiente enlace.

1 comentario: