El documento describe el rompecabezas matemático de las Torres de Hanói, el cual consiste en mover discos de diferentes tamaños entre tres varillas siguiendo reglas de apilamiento. Se explica la función HANOI que resuelve el rompecabezas de forma recursiva moviendo los discos uno a uno de la varilla inicial a la final. También se incluye el código fuente en C++ que implementa dicha función recursiva.
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Torres de hanoi
1. ESCUELA POLITECNICA NACIONAL
Facultad de ingeniería en sistemas
Estructura de datos
Nombre: Alexander Pinchao
Tema: Torres de Hanói
Definición.-
Las Torres de Hanói es un rompecabezas o juego matemático inventado en 1883 por el
matemático francés Édouard Lucas. Este solitario se trata de un juego de ocho discos de radio
creciente que se apilan insertándose en una de las tres estacas de un tablero. El objetivo del juego
es crear la pila en otra de las estacas siguiendo unas ciertas reglas. El problema es muy conocido
en la ciencia de la computación y aparece en muchos libros de texto como introducción a la teoría
de algoritmos.
Planificación.-
Descripción.-
El juego, en su forma más tradicional, consiste en tres varillas verticales. En una de las varillas se
apila un número indeterminado de discos (elaborados de madera) que determinará la complejidad
de la solución, por regla general se consideran ocho discos. Los discos se apilan sobre una varilla
en tamaño decreciente. No hay dos discos iguales, y todos ellos están apilados de mayor a menor
radio en una de las varillas, quedando las otras dos varillas vacantes. El juego consiste en pasar
todos los discos de la varilla ocupada (es decir la que posee la torre) a una de las otras varillas
vacantes. Para realizar este objetivo, es necesario seguir tres simples reglas:
Sólo se puede mover un disco cada vez.
Un disco de mayor tamaño no puede descansar sobre uno más pequeño que él mismo.
Sólo puedes desplazar el disco que se encuentre arriba en cada varilla.
Existen diversas formas de realizar la solución final, todas ellas siguiendo estrategias diversas.
FUNCION HANOI
Condiciones.-
Para tener un tiempo de procesamiento optimo con números enteros el valor no debe ser
mayor a 13
No acepta strings
No acepta fracciones
No acepta números negativos
Parámetros.-
Entrada.- Entero n
Salida.- String
Retorno.- NONE
Escenarios.-
10.- si número mayor que 0 ir a 30
20.- mensaje el número es erróneo
30.-si número no es mayor a 1 ir a 50
2. 40.- retornar movimiento
50.- salir
60.-retornar movimiento
70.-reducir el valor de número una unidad
80.-ir a 30
Código fuente.-
/// Towers of Hanoi.cpp: archivo de proyecto principal.
#include"stdafx.h"
#include"iostream"
#include"math.h"
usingnamespace System;
usingnamespacestd;
voidhanoi(intnum,charA,charC,char B){
if(num==1){
cout<<"Mueva el bloque "<<num<<" desde "<<A<<" hasta "<<C<<endl;
}
else {
hanoi(num-1,A,B,C);
cout<<"Mueva el bloque "<<num<<" desde "<<A<<" hasta "<<C<<endl;
hanoi(num-1,B,C,A);
}
}
int main(array<System::String ^> ^args){
intn,opcion;
char A,B,C;
do{
cout<<"1.-Resolver Torre de hanoi.n2.-Salir.n Opcion: ";
cin>>opcion;
if(opcion==1){
cout<<"Los clavijas son A B Cn";
cout<<"Numero de discos: ";
cin>>n;
hanoi(n,'A','C','B');
}
}
while(opcion!=0);
system("pause");
return 0;
}