[ Dudas sobre el curso de programación de juegos ]

movimiento de varios objetos (torres de hanoi)

15-Feb-2014 05:53
Invitado (hatwhite)
1 Respuestas

Hola buen dia, mi pregunta es la siguiente, estoy haciendo un juego, las torres de hanoi en modo iterativo, mi problema es el siguiente:

muevo el disco1 a la posicion 3, pero ahora quiero mover el disco2, no se como hacer para dejar de controlar el disco1 y que el disco2 tome el control, agradeceria muchisimo la respuesta, saludos.


15-Feb-2014 10:29
Nacho Cabanes (+84)

Las torres de Hanoi es uno de esos problemas "típicamente recursivos", que resultan muy simples en su versión recursiva, y no tanto en su versión iterativa.

La forma habitual de convertirlo a iterativo es usar una pila auxiliar en la que vas guardando pasos intermedios para recuperarlos depués.

Aun así, para este problema concreto existe lo que llaman una "solución binaria", bastante compacta (aunque no muy sencilla, porque necesita operaciones a nivel de bits). Sería algo como


SEA n = número de discos
MIENTRAS x ESTÉ ENTRE 1 (incluido) Y 1 DESPLAZADO A LA IZQUIERDA n bits 
     RESTAR 1 de n, DIVIDIR POR 3 Y TOMAR EL RESTO COMO a
     SUMAR A NIVEL DE BITS x CON x-1, SUMAR 1, DIVIDIR POR 3 Y TOMAR EL RESTO COMO b 
     ESCRIBIR "MOVER DE LA TORRE" a "A LA TORRE" b 
     SUMAR 1 A x


Puedes ver los detalles de esta solución y otras formas de resolverlo en la Wikipedia (en inglés, que es mucho más detallada que el artículo correspondiente en español):

http://en.wikipedia.org/wiki/Tower_of_Hanoi#Binary_solution






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)