Laberintos

Volver a San Andrés 2010-01

=Solucionador de Laberintos= Éste programa genera laberintos aleatorios y los soluciona siempre que sea posible. toc =Proyecto=

Integrantes
Francisco Galeano Keshia Britton

Programa
El programa genera un laberinto aleatorio y lo soluciona cada que se recarga la página. Los cuadrados de color verde son obstáculos, los de color gris son vacíos (por donde se puede pasar) y los azules son la solución encontrada. Si los cuadrados azules llegan de nuevo al inicio, el laberinto no tiene solución. media type="custom" key="7596383"

Código fuente
=Enunciado del problema= LABERINTOS

La siguiente cuadrícula representa un laberinto, en las casillas que hay un número 1 indica que hay muro y en las casillas en las que hay un 0 significa que no hay nada y se puede pasar. Se inicia en la parte superior izquierda y se termina en la parte inferior derrecha.
 * 0 || 0 || 1 || 0 || 0 || 0 || 0 || 0 ||
 * 0 || 1 || 1 || 0 || 1 || 1 || 1 || 1 ||
 * 0 || 0 || 0 || 0 || 1 || 0 || 0 || 0 ||
 * 1 || 1 || 0 || 1 || 1 || 0 || 1 || 0 ||
 * 1 || 1 || 0 || 0 || 1 || 0 || 1 || 0 ||
 * 0 || 0 || 0 || 1 || 1 || 0 || 1 || 0 ||
 * 0 || 1 || 0 || 0 || 0 || 0 || 1 || 0 ||
 * 0 || 0 || 1 || 1 || 1 || 1 || 1 || 0 ||

Haga un programa que tenga las siguientes características:
 * Genere los laberintos de dos formas:
 * Lea las dimensiones del laberinto (N y M) y genere un laberinto aleatorio
 * Lea el laberinto de un archivo
 * Hacer al menos una función que recorra el laberinto y lo solucione si es posible, sino, debe informar que el laberinto no tiene salida.
 * Al final debe mostrar un reporte de la cantidad de pasos dados y de los movimientos realizados, por ejemplo, IZQUIERDA, ARRIBA, DERECHA, ABAJO.
 * Controle los valores inválidos, por ejemplo, no se permite un tamaño de laberinto menor a 2x2.
 * Permita guardar un laberinto.

=Documento entregado=

INFORME SOBRE EL PROYECTO Análisis Lo primero que se debe saber es que es un laberinto y como se desarrolla o llega al final. Según Microsoft Encarta 2009 el laberinto es un edificio compuesto por pasadizos y habitaciones intrincadas, ideado para confundir a quien entre e impedir que encuentre la salida. Una vez reconocido los parámetros de un laberinto procedemos a resolver el laberinto. Para resolver el proyecto necesitamos crear un laberinto de forma aleatoria, para esto necesitamos una matriz modificable (nxm) con un random o aleatorio entre 0 y 1, para ser solucionado por el sistema. El random tiene la particularidad en este caso de trabajar con números reales, por ende hicimos una condición para que nos maneje adecuadamente el aleatorio. Por simple o complejo que sea un laberinto no conocemos el camino, así que, por un momento nuestra pregunta fue ¿cómo lo resolvemos? Pero ambos llegamos un acuerdo y escogimos un método. Este método es tan efectivo que inclusive podría sacarnos de un laberinto por difícil que sea, siempre y cuando este tenga solución. Un método tal vez largo pero muy seguro es seguir siempre por la derecha relativa, ya que si se cambia de arriba hacia abajo para alguien que este fuera del laberinto seria la izquierda o alguna otra dirección pero sería la derecha del participe. Entradas: tamaño del laberinto y nivel de dificultad para el laberinto construido. Salida: solucionar el laberinto siempre y cuando exista la solución, guardar los movimientos en un archivo. Al querer ir siempre por la derecha nos topamos con un problema, y complica todas las condiciones ya que la derecha es relativa. Para esto tenemos que comparar los movimientos anteriores para saber de dónde viene y cuál es su derecha con respecto al paso anterior. Podemos dividir cada subproblema que esto complica con algunas funciones y procedimientos que ayude a controlar el recorrido cumpliendo con la condición de ir siempre por la derecha. ¿Cómo funciona? Empezamos dándole clic al play donde aparecerá el tablero y observaremos que: El camino del laberinto es de color blanco, las paredes u obstáculos son de color azul oscuro y el recorrido se marca con azul claro. El recorrido se empieza a marcar desde el extremo superior derecho del tablero donde el recorrido empieza a desplazarse y marcarse a su derecha ósea a la izquierda del tablero. Donde su derecha es relativa y puede convertirse en un abajo, izquierda o arriba relativamente con la posición del recorrido. Para que este laberinto tenga solución el recorrido debe llegar al extremo inferior izquierdo del tablero que será nuestro final de lo contrario volverá al punto de inicio. Los pasos dados por el recorrido serán guardados en un archivo llamado laberinto para llegar rápido a él oprimimos ctrl+k y aparecerá la opción del archivo le damos doble clic y aparecerán los pasos del recorrido. =Póster=