Escribir código para resolver el Puzzle de la torre de Hanoi

P: ¿Cuál es la forma más sencilla de obtener la suma de los números enteros entre 1 y 100?

R: en primer lugar obtener la suma de los números enteros entre 1 y 99, luego añadir 100.

¿Tonto, correcto? Este es realmente un ejemplo de una técnica poderosa de divide y vencerás en la programación de la computadora conocido como "recursividad". Recursividad trata una tarea de cómputo como un sistema de cómputos más pequeñas, de manera similares, con el siguiente cómputo menor siendo calculado y luego el siguiente y el siguiente, hasta llegar a un "caso base" con una respuesta conocida. Para el siguiente paso del ejemplo anterior, para obtener la suma de números enteros entre 1 y 99, usted simplemente suma los números enteros entre 1 y 98, luego añade 99. Si seguir la cadena, se llega al caso base de suma de números enteros entre 1 y 1, que sabemos que es 1.

Un divertido uso de la recursividad es para escribir un programa que te puede dar la solución al rompecabezas de la torre de Hanoi. Ese rompecabezas se muestran en la imagen de esta página. El objetivo es mover todos los discos desde el primer post al tercer puesto. Las reglas del puzzle son:

  • Sólo puede moverse un disco a la vez de un puesto a otro, que significa en cualquier momento, a más de un disco puede ser de un post.
  • Puede mover cualquier disco al segundo puesto como una zona de descanso.
  • Los discos no se pueden mover en la parte superior un disco más pequeño.

¿Cómo puede este rompecabezas de dividirse en partes más pequeñas? Como muestran las imágenes, esta versión de 7-disco del rompecabezas de la torre de Hanoi se puede resolver como:

  1. Resolver la versión 6-disco del rompecabezas de poste A poste B.
  2. Mover disco 7 de poste A poste C.
  3. Resolver nuevamente la versión de 6 discos de puzzle, esta vez del poste B a C.

Para este instructable, usaré JavaScript como lenguaje de programación para que este pueda ejecutar en un navegador web estándar. Ayuda a estar familiarizado con algunos conceptos de programación básico, pero si no, esperemos que esta instructable le sea interesante.

Si te gusta este instructable, por favor, vote por mí en el concurso de creaciones codificadas antes de 18 de mayo de 2015. Gracias.

Vamos a comenzar la codificación.

Artículos Relacionados

Laberinto para resolver Robot

Laberinto para resolver Robot

Información adicional en: http://patrickmccabemakes.com/hardware/Maze_Solvin...En este instructable mostrará usted cómo construir un laberinto para resolver robot. Este es realmente mi 3er intento hacer uno. La primera fue un completo fracaso. El seg
Generador de código para menús personalizados de Android/Arduino activar salidas de Arduino y apagado. Andriod/Arduino para principiantes. Absolutamente ninguna programación requerida

Generador de código para menús personalizados de Android/Arduino activar salidas de Arduino y apagado. Andriod/Arduino para principiantes. Absolutamente ninguna programación requerida

Actualización: un usuario pidió menú apoyo. pfodApp siempre admite submenús pero he agregado submenús al pfodDesigner. El instructable diseño un sistema de menú Custom muestra cómo utilizar pfodDesigner para crear un menú con submenús que mostrará en
Robot más simple para resolver el laberinto de Possible Microcontroller-Based

Robot más simple para resolver el laberinto de Possible Microcontroller-Based

Ok, tienes un microcontrolador y necesita para construir el robot posible más simple para resolver un laberinto. ¿Cuál sería tu solución? Consideramos que una pregunta difícil, use su imaginación, hay una solución que sólo te llevará 15 minutos de su
Ejecuta Accelstepper más rápido - HodgePodging de código para una mayor rapidez máxima velocidad

Ejecuta Accelstepper más rápido - HodgePodging de código para una mayor rapidez máxima velocidad

¡ Bienvenido a mi instructable simple! Espero encontrar tiempo para editar este instructable durante la próxima semana y hacer mejoras. También te cuenta que intentan usar etiquetas de código, pero por desgracia que parece limitada a los miembros de
Cómo escribir código de G (básico)

Cómo escribir código de G (básico)

los conceptos básicos de la escritura de código de G y M códigoPaso 1: Escribir la introducción Comenzar la primera línea con un '%' y luego pulse enter. La siguiente línea debe comenzar con un capital ' o '. Si el personaje que es un cero la máquina
Código para un cuestionario simple!

Código para un cuestionario simple!

se trata de un código y usted puede comprobar por vosotros mismosPaso 1: Abrir Bloc de notasabrir Bloc de notas de la forma más fácilPaso 2: Copiar y pegar estodecolor 02: Eco INTRO eco QUIZ. A. tipo un inicio eco. B. tipo b para salida set /p entrad
VBA código para desbloquear A bloquear hoja de Excel

VBA código para desbloquear A bloquear hoja de Excel

si alguna vez has olvidado una contraseña para uno de tus hojas de cálculo de excel usted sabe lo frustrante que puede ser.El código usado en esta instrucción es uno de los más sencillos que he encontrado. Se generará un código utilizable que desbloq
Cómo escribir usando cinta para ductos

Cómo escribir usando cinta para ductos

después de hacer algunas otras cosas de la cinta, me preguntaba qué más podría hacer del mayor invento del hombre que sería digno del concurso "Duro de cinta del conducto". Después de algún pensamiento, se me ocurrió esto. "Cómo escribir us
Cómo escribir canciones cortas para principiantes

Cómo escribir canciones cortas para principiantes

decidí que me gustaría probar algo nuevo. Por favor dígame cuál es tu opinión en esto. Gracias.Paso 1: materiales ♥ un lápiz o bolígrafo ♥ un ♥ superficie duro papel tiempo libre ♥Paso 2: Tiempo de elegir Elegir o hacer un tema para hablar y escribir
Importar una biblioteca de código para el Arduino

Importar una biblioteca de código para el Arduino

Importar una biblioteca de código en el entorno de Software de Arduino.Esta es una habilidad que cualquier persona que trabaje más allá de los principios del código básico de la IDE de Arduino en algún momento tendrán que aprender.Este pequeño instru
Cómo construir un sensor de aparcamiento para resolver el dolor de encontrar un lugar libre

Cómo construir un sensor de aparcamiento para resolver el dolor de encontrar un lugar libre

En este proyecto construiremos un sensor de estacionamiento simple con un Raspberry Pi. ¿Resulta que por las mañanas tengo que enfrentar esta cuestión: es el lugar de estacionamiento sólo frente a mi oficina ya? Porque cuando en realidad es, tengo qu
Máquina de escribir antigua reciclada para convertirse en sostenedor del cepillo de pintura

Máquina de escribir antigua reciclada para convertirse en sostenedor del cepillo de pintura

descargo de responsabilidad: yo no destruyó una máquina de escribir antigua perfectamente buena. Encontré esta vieja máquina de escribir en una venta de garaje. Fue en la pila libre y las claves ya habían sido quitadas por alguien con el fin de hacer
El último paso para resolver un cubo de Rubik

El último paso para resolver un cubo de Rubik

Para terminar el cubo simplemente tienen la cara completa de la derecha y realizar el algoritmo L180, Ti, B, Fi, L180, Bi, F, Ti, L180. Quizás tenga que realizar el algoritmo varias veces, pero usted conseguirá.Logro desbloqueado. Ahora tienes otro l
LED luz para arriba Sims plomada traje (esa torre verde por encima de su cabeza)

LED luz para arriba Sims plomada traje (esa torre verde por encima de su cabeza)

tras años y años de "querer" hacer la plomada verde de serie de los Sims, finalmente lo hice! El fresco sobre el "traje" es que usted puede usar lo quiera y ser un Sim! He utilizado Dan del instructivo, en este enlace aquí, para tener