Skip to content

cmhd2001/TLOCelda

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Proyecto 2: La Leyenda de Celda.

Estudiantes:
16-10782 Franco Murillo
18-10451 Carlo Herrera
19-10105 Daniela Avendaño


Construcción de los predicados.

1. Explicación de cruzar/3.

Determina si un mapa es seguro o una trampa con una configuración dada de palancas.

  • Cuando Palancas es instanciado con una constante (nonvar):

    • cruzar(Mapa, Palancas, seguro): Es cierto si cruzable(Mapa, Palancas) es verdadero.

    • cruzar(Mapa, Palancas, trampa): Es cierto si cruzable(Mapa, Palancas) es falso.

  • Cuando Palancas es instanciado con una variable. Generan configuraciones de palancas.

    • cruzar(Mapa, Palancas, seguro): Genera combinaciones de palancas usando encontrar_palancas/2 y generar_combinaciones/2 que hacen el mapa cruzable.

    • cruzar(Mapa, Palancas, trampa): Genera combinaciones de palancas que hacen el mapa no cruzable.

Para esto fue necesario crear funciones auxiliares cruzable/2, encontrar_palancas/2, generar_palancas/3 y generar_palancas/2

  1. cruzable/2 Determina si un mapa puede ser cruzado con una configuración dada de palancas.
  • Caso Base:

    • cruzable(pasillo(X, regular), Palancas): Es cierto si (X, arriba) está en las palancas.

    • cruzable(pasillo(X, de_cabeza), Palancas): Es cierto si (X, abajo) está en las palancas.

  • Submapas:

    • cruzable(junta(SubMapa1, SubMapa2), Palancas): Es cierto si ambos submapas son cruzables.

    • cruzable(bifurcacion(SubMapa1, SubMapa2), Palancas): Es cierto si al menos uno de los submapas es cruzable.

  1. encontrar_palancas/2. Encuentra todas las configuraciones posibles de palancas para un mapa dado.
  • Pasillos:

    • encontrar_palancas(pasillo(X, _), [(X, arriba), (X, abajo)]): Encuentra las palancas posibles en un pasillo.
  • Submapas:

    • encontrar_palancas(junta(SubMapa1, SubMapa2), Palancas): Encuentra palancas para una junta combinando las de ambos submapas.

    • encontrar_palancas(bifurcacion(SubMapa1, SubMapa2), Palancas): Encuentra palancas para una bifurcación uniendo las de ambos submapas.

  1. generar_combinaciones/3 y generar_combinaciones/2. Genera todas las combinaciones posibles de palancas sin repetir letras.
  • generar_combinaciones([], [], _): Caso base, combinación vacía.

  • generar_combinaciones([(Letra, Posicion) | RestoPalancas], [(Letra, Posicion) | Combinaciones], LetrasUsadas): Incluye (Letra, Posicion) en la combinación si la letra no ha sido usada.

  • generar_combinaciones([_ | RestoPalancas], Combinaciones, LetrasUsadas): Omite la palanca actual y continúa generando combinaciones.

  • generar_combinaciones(Palancas, Combinaciones): Llama a generar_combinaciones/3 con una lista vacía de letras usadas.

2. Explicación de siempre_seguro/1.

Determina si un mapa es siempre seguro, independientemente de la configuración de palancas.

  • Caso Base:

    • siempre_seguro(pasillo(_, regular)): Es cierto para pasillos regulares.

    • siempre_seguro(pasillo(_, de_cabeza)): Es falso para pasillos de cabeza.

  • Submapas:

    • siempre_seguro(junta(SubMapa1, SubMapa2)): Es cierto si ambos submapas son siempre seguros.

    • siempre_seguro(bifurcacion(SubMapa1, SubMapa2)): Es cierto si al menos uno de los submapas es siempre seguro.

3. Explicación de leer/1.

  • Imprime un mensaje al usuario solicitando el nombre del archivo a leer.

  • Lee el archivo y unifica el mapa que contiene en Mapa.


Guía de uso

Compilación.

Primero inicie el interprete de Prolog ejecutando en la terminal

$ swipl

Nota: si no tienes el interprete de Prolog en tu ordenador puedes obtenerlo siguiendo estas instrucciones de instalación.

Ejecución.

Introduzca y corra en el interprete

?- [celda].

Para cargar el archivo principal con los códigos creados para solucionar el problema.

Corra la función

?- leer(Mapa).

para unificar el mapa que quiera probar en la variable Mapa.

Utilice los predicados explicados al principio para obtener las respuestas a sus dudas sobre su mapa.

It's a secret to everybody.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages