19 mayo 2006

Las Torres de Hanoi

Esta es una forma rápida y fácil de resolver el juego de las Torres de Hanoi. Simplemente hay que sustituir num_discos por la cantidad de discos que queramos que tenga el juego, por ejemplo 10.

max = 1 << num_discos;

for (x = 1; x < max; x++)
printf("mover disco de %d a %d\n", (x&x-1)%3, ((x|x-1)+1)%3);

El código está escrito en C, se puede utilizar en Java simplemente cambiando el printf por un System.out.println.

He probado el código con 20 discos y ha tardado casi 2 horas y media en ejecutar ese programa de 3 lineas.