Proceso Torres_Hanoi
Escribir "el objetivo del juego es mover todos los discos de la torre 1 a la torre 3";
Escribir "trate de hacerlo en el menor numero de pasos posibles";
Escribir "recuerde que no puede poner un disco grande sobre uno pequeño";
Escribir " ";
//vector para controlar numero de torres y de discos
Dimension torres[3,5], cantidad_discos[3]; //cantidad_discos: controla dicos que van en cada torre
discos<-5;
// inicializar los datos de discos en cada torre
cantidad_discos[1]<-discos;
cantidad_discos[2]<-0;
cantidad_discos[3]<-0;
//inicia contador
para i<-1 hasta discos hacer
torres[1,i]<-discos-i+1;
finpara
movimientos<-0;
// El mientras hace que el juego corra hasta que en la torre 3 no esten todos los discos
mientras cantidad_discos[3]<>discos Hacer
Escribir "numero de movimientos:" ,movimientos;
// dibuja las tres torres
para i<-1 hasta 3 Hacer
escribir "";
escribir "Torre ",i;
//el si deja campos vacios en las torres con valor 0
si cantidad_discos[i]=0 Entonces
Escribir "";
Escribir "";
sino
para j<-cantidad_discos[i] hasta 1 con paso -1 Hacer // con los vectores cuenta los discos de la torre, de arriba hacia abajo
segun torres[i,j] Hacer // el segun dibuja el disco en la posicion solicitada
1: escribir " [_1__] ";
2: escribir " [__2___]";
3: escribir " [___3____] ";
4: escribir " [____4_____]";
5: escribir "[_____5______]";
finsegun
FinPara
finsi
FinPara
// para emplear movimientos
Escribir "Mover disco desde la torre: ";
leer torre1;
Escribir "a la torre: ";
leer torre2;
//si controla que el numero de torre sea correcto
si torre1<0 O torre1>3 O torre2<0 O torre2>3 Entonces
escribir "No permitido";
sino
//controla que haya 1 disco en la torre 1
si cantidad_discos[torre1]=0 Entonces
escribir "No permitido";
Sino
// controla el tamaño del disco que se quiere mover
disco_a_mover <- torres[torre1,cantidad_discos[torre1]];
moverse<-verdadero;
// controlar que la torre dos no tenga discos o tenga discos mas grandes
si cantidad_discos[torre2]<>0 entonces
si torres[torre2,cantidad_discos[torre2]]<disco_a_mover Entonces
moverse<-Falso;
FinSi
FinSi
//permite movimietnto despues del filtro
si moverse Entonces
movimientos <- movimientos+1;
cantidad_discos[torre2]<-cantidad_discos[torre2]+1;
torres[torre2,cantidad_discos[torre2]] <- disco_a_mover;
cantidad_discos[torre1]<-cantidad_discos[torre1]-1;
Sino
escribir "no permitido";
finsi
FinSi
finsi
finmientras
// muestra resulato final
escribir "";
escribir "has realizado ",movimientos," movimientos!";
escribir "";
escribir " [_1__] ";
escribir " [__2___]";
escribir " [___3____] ";
escribir " [____4_____]";
escribir "[_____5______]";
Escribir "GAME OVER";
FinProceso
