Está en la página 1de 3

Laberinto de Creta

Un grupo de arqueólogos griegos descubrieron las ruinas de un antiguo laberinto en la isla de


Creta, se cree que es el mismo de la “Leyenda del Minotauro”. Por desgracia los arqueólogos no han
podido completarlo como Teseo, por lo cual, solicitaron ayuda al grupo de Algoritmos y Estructuras de
Datos de la UCV para poder verificar si dicho laberinto tiene alguna solución.

Se le pide al estudiante que diseñe un algoritmo capaz de conseguir la salida del laberinto (en
caso que exista alguna) con la menor cantidad de pasos, pero por desgracia el laberinto es un lugar
peligroso y complejo, ya que existen distintos obstáculos, y es necesario conseguir una llave para poder
salir del mismo.

Entre los distintos obstáculos se encuentran Las Trampas y Los Guardias:


 Trampas: Las trampas son objetos colocados en los distintos pasillos, que son utilizados
para inutilizar cualquier intruso que se tope con ella. Gracias a los arqueólogos se
descubrió que dichas trampas no eran de buena calidad, por lo tanto no eran letales, pero
entorpecían a los exploradores mientras las desactivaban.
 Los Guardias: Los guardias son personas entrenadas para proteger las diferentes
secciones del laberinto. No todos los guardias son iguales, cada uno de ellos tiene un
nombre diferente, una cantidad de fuerza y una posición especifica en el laberinto, por
ejemplo:
◦ Minotauro 6 3 3
◦ Hoplita 3 4 1
El Minotauro se encuentra en la casilla 3,3 y posee fuerza 6.
El Hoplita se encuentra en la casilla 4,1 y posee fuerza 3.

Es posible conseguir distintos objetos en el laberinto, que estarán representados por: Nombre
del Objeto, Cantidad de Fuerza que proporciona el mismo, y coordenadas X,Y.
Por ejemplo:

Espada 4 1 5
Escudo 2 2 3
La espada se encuentra en la casilla 1,5 y proporciona fuerza 4.
El escudo se encuentra en la casilla 2,3 y proporciona fuerza 2.
El objeto más importante (que siempre está presente) es la llave, que será usada para poder salir
del laberinto. La llave se representará como un objeto llamado “Llave” con las coordenadas X y Y de la
misma (no se le asigna fuerza).

Entrada:
La entrada será a través de un archivo de texto llamado Entrada.in, que tiene:
1. Una línea con 5 enteros, representados como: A L G O P: A ancho del laberinto, L largo del
laberinto, O número de objetos en el laberinto, G número de guardianes en el laberinto, P
número máximo de pasos permitidos.
2. L líneas de A caracteres indicando la estructura del laberinto:
1. x indica paredes
2. _ indica camino libre
3. v para las trampas
4. T la posición inicial de Teseo (aparece una sola vez), y
5. S para la salida (aparece una sola vez)
3. G líneas indicando el nombre de los guardianes, su fuerza y su ubicación en el mapa.
4. Por último O líneas indicando el nombre del objeto, la cantidad que fuerza que proporciona
(puede ser 0) y su ubicación en el mapa.

Salida:
La salida será vía consola, tendrá que indicar el mensaje “Teseo logra salir del laberinto” junto a los
objetos encontrados y cuales guardianes han sido eliminados, además del camino recorrido usando las
letras Norte Sur Este u Oeste.
En caso de no conseguir la salida, o se acabe el tiempo, indicar con un mensaje “Teseo no pudo
lograrlo”.

Ejemplo 1:

Entrada: Salida
5 5 1 2 20 Teseo logra salir del laberinto
x_xxx Objetos encontrados: Espada, Llave
T_v_x Guardianes eliminados: Minotauro
x_x_x ESNNSEESSS
xx__x
xxxSx
Minotauro 4 4 3
Llave 2 1
Espada 4 2 3
Ejemplo 2:

Entrada: Salida
5 3 0 1 10 Teseo logra salir del laberinto
xxxxx Objetos encontrados: Llave
ST___ EEEOOOO
xxxxx
Llave 5 2

Notas:

 Es obligatorio conseguir el camino más corto desde el inicio del laberinto hasta la salida
consiguiendo la llave.
 Pasar por una trampa por primera vez se tardará 1 turno extra para poder desactivarla.
 Las trampas desactivadas no consumirán turnos extras.
 La cantidad de fuerza necesaria para eliminar a un guardián tiene que ser igual o superior a la
del guardián.
 Es posible que la llave se encuentra colocada en alguna trampa, o incluso que la tenga algún
guardián, en estos casos, la posición de la llave coincidirá con la de la trampa o la del guardián.
 Eliminar a un guardián no consumirá ningún turno, ni disminuirá la fuerza de los objetos
encontrados
 Es MUY importante para la optimización del programa, evitar los caminos “bucles”, ya que
genera caminos innecesarios, los caminos bucles son caminos en los cuales se repiten los pasos.
◦ por ejemplo:

Usando el “Ejemplo 2”, puede ocurrir un bucle como el siguiente:

De la posición 2x2, Teseo camina a la 3x2, y vuelve a la 2x2 y así sucesivamente.


 Para evitar los caminos repetidos, debe tener un camino sin repeticiones DESDE el inicio
HASTA la llave y otro DESDE la llave HASTA la salida. Naturalmente, estos dos caminos sí
pueden sobreponerse.

También podría gustarte