Dejé el tema planteando el problema para 4 discos.
Recordemos que el planteamiento de 3 discos se puede resumir así:
- Si hay 3 discos en la torre A, conseguir mover los 2 de arriba a la torre B.
- Una vez que estén en la torre B, mover el disco grande de la torre A a la C.
- Para terminar mover los 2 discos de la torre B a la torre C.
Sería tanto como decir que si hay 4 discos tenemos que hacer...
- Conseguir como podamos mover los 3 discos más pequeños a la torre B.
- Mover el disco más grande de la torre A a la C.
- Mover los 3 discos más pequeños de la torre B a la C
- Mover el más pequeño a la torre B.
- Mover el mediano a la torre C.
- Mover el pequeño a la C encima del mediano.
- Mover el grande a la B.
- Mover el pequeño a la A.
- Mover el mediano a la B.
- Mover el pequeño a la B.
Ya veo la luz...
Resulta que el caso de 3 discos es un caso muy similar al de 4.
En ambos casos se hace lo siquiente:
- Miramos cuantos discos hay en la Torre A. Movemos todos menos el más grande a la
Torre C. - Mover el disco más grande de todos a la torre B.
- Mover los otros discos a la torre B.
Por lo tanto, para mover una pirámide de discos de ORIGEN a DESTINO debemos hacer lo siguiente:
- Si hay N discos, hay que mover N-1 discos de ORIGEN a AUXILIAR.
- El disco más grande de todos lo movemos directamente de ORIGEN a DESTINO.
- Por último movemos los N-1 discos de AUXILIAR a DESTINO.
Luego en el de 3 discos hay que mover primero los 2 de arriba como hemos visto y luego mover el que queda.
Con 4, hay que mover los 3 de arriba (como hemos visto en la línea anterior) y por último el más grande.
Así hasta el infinito.
En el post de mañana la solución lisp.
A ver si alguien se anima y cuelga la solución en forma de comentario...
Saludos.
No hay comentarios:
Publicar un comentario