Hanoimania!
Domingo , 6 de Febrero de 2005. Enrique Barbeito García
Hace ya bastante tiempo que en Barrapunto apareció una curiosa anotación sobre un recurso dedicado a implementar en más de cien lenguajes de programación (o “derivados“) una solución para el problema de las Torres de Hanoi.
Éste es un famoso juego matemático (un puzzle) ideado en 1883 por el matemático francés Edouard Lucas Amiens, inspirado en una leyenda de un templo hindú. En 1884, alrededor de esta leyenda, otro matemático francés (De Parville) creó una historia ligada al juego que suele servir de introducción para el mismo. Dice así:
En el gran templo de Benarés, debajo de la cúpula que marca el centro del mundo, yace una base de bronce, en donde se encuentran acomodadas 3 agujas de diamante, cada una del grueso del cuerpo de una abeja y de una altura de 50 cm aproximadamente En una de estas agujas, Dios, al momento de la creación, colocó 64 discos de oro el mayor sobre el plato de bronce, y el resto de menor tamaño conforme se llega a la cima. Día y noche, incesantemente, los sacerdotes del templo mueven los discos de una aguja a otra de acuerdo con las leyes impuestas e inmutables de Brahma, que requieren que los sacerdotes se encuentren todo el tiempo laborando, no muevan más de un disco a la vez y que deben colocar el disco en alguna de las agujas de modo que no cubra a un disco de radio menor. Cuando los 64 discos hayan sido transferidos de la aguja en la que Dios colocó los discos, al momento del a creación, a otra aguja, el templo y los brahmanes se convertirán en polvo y junto con ellos el mundo desaparecerá.De Parville
También conocido como las Torres de Brama, este problema es bastante popular entre estudiantes de informática ya que se suele dar en asignaturas de programación y, concretamente, en temas sobre recursividad. Hace unos días, buscando información al respecto, me topé con un enlace bastante interesante; a quien le interese, lo tiene [ aquí ]
Como deja ver la leyenda, el juego consta de tres postes en posición vertical y un número N de discos perforados apilados en el poste más a la izquierda ordenados por diámetro descendentemente (tal y como muestra la imagen). Consiste en pasar los discos al poste derecho manteniendo el mismo orden y ayudándose del poste central como zona auxiliar. Las restricciones del juego son dos:
- Los discos solo se pueden mover de uno en uno en cada movimiento
- Ningún disco puede estar encima de otro de menor diámetro.
Detrás de este puzzle parecen esconderse algunas propiedades matemáticas; la más famosa quizás es la forma en que crece el número de mínimos movimientos que habrá que hacer a medida que el número de discos se hace mayor. Este número de movimientos mínimos se obtiene a través de la función exponencial:
f(n) = 2n - 1
En Hanoimania! disponemos de infinidad de resoluciones, algunas bastante sencillas de entender y otras algo rebuscadas y muy originales :-) Este recurso, bastante educativo, es fruto de Amit Singh. Ha hecho cosas muy curiosas, como Hanoi OS: un sistema operativo para arquitecturas x86 cuya principal tarea es la resolución de las Torres de Hanoi; no hay más que teclear el número de discos que se desee y el sistema obtiene los movimientos mínimos. No lo he probado pero en la web de Hanoi OS se puede ver una captura de pantalla de cómo funciona. Otra implementación bastante sorprendente (además de rebuscada jeje) es [ ésta ] que se basa en la resolución del puzzle a través de un ping. También para la Gameboy Advance, en un reproductor MP3 para el coche, en la Dreamcast, … Sencillamente impresionante jeje :-)
Una gran muestra de la creatividad e ingenio que algunos son capaces de tener. Y si todavía quieres más hanoi, aquí tienes más cortesía de Koders :-)
Enlace: http://hanoi.kernelthread.com/

Siempre me ha gustado este juego (y como bien dices también lo he padecido en alguna asignatura), pero esto ya me parece enfermizo, la implementación a través de ICMP es la cosa mas friqui que he visto en años, alucinante!! jeje
Sí, para mí también es de lo más alucinante que he visto en bastante tiempo jaja :)
Es genial la página que ha creado con solo este puzzle; vaya peligro tiene con un teclado… madre mía XD
La implementación con la que también alucino es la de lenguaje múliple. El tío se ha montado un mezclote de código válido para BASH, Perl y también compila en C jajaja, impresionante :-)
Sé que no tiene mucho que ver ya que no es código sino ejemplo de resolución curiosa pero no me he podido resistir:
Una práctica chula: robots y torres de Hanoi