lunes, 25 de octubre de 2010

.: Lenguajes Lógicos (LB) :.

:: Deportistas ::



Materia. Lab de Leng de Progr

Hora. V1(Jueves)

Compañeros, aquí les presento el problema lógico que saque de una página aparte a la que estábamos viendo en clase, el cual resolví y después lo adapte a un código en Prolog.
El problema planteado fue el siguiente:
“Las Deportistas”
Ana, Beatriz y Carmen. Una es tenista, otra gimnasta y otra nadadora. La gimnasta, la más baja de las tres, es soltera. Ana, que es suegra de Beatriz, es más alta que la tenista. ¿Qué deporte practica cada una?
Lo primero a realizar, fue obtener las preposiciones que me proporcionaba el problema para analizar las condiciones de cada deportista:
*      La gimnasta es la más baja de las tres.
*      La gimnasta es soltera.
*      Ana es suegra de Beatriz
*      Ana es más alta que la tenista.
La respuesta fue fácil:
*      Gimnasta. Carmen.
*      Tenista. Beatriz.
*      Nadadora. Ana.
Para llegar a esta conclusión, primeramente partimos del hecho de que sólo hay tres mujeres: Ana, Carmen y Beatriz.
Deduje que Carmen es la gimnasta, pues la condición para la gimnasta es que debía ser soltera, y debido a que Ana es suegra de Beatriz, se me indica que tienen un parentesco en el cual ninguna de las dos partes son solteras.
Ahora sólo me queda Beatriz y Ana.
Concluí que Ana es la nadadora a causa de la preposición que dice que “Ana es más alta que la tenista”, la cual me dice que Ana no es la tenista y por consiguiente, debía de ser la nadadora.
Y por último, y debido a concepto de eliminación, es por lógica definir que Beatriz es la Tenista, pues es la persona que queda y ya sólo queda un deporte sin definir.
Código en Prolog
Al momento que ejecuten swi-prolog en el terminal, seguir estas intrucciones:
  • consult('Deportistas.pl').
  • listing.
Si desean revisar una de las cuestiones del problema, sólo hay que teclear el nombre de la función tal y como nos aparece en pantalla con ayuda de lo que fue el "listing", sólo que en lugar de terminar la línea con :-, deberá terminar el punto ( . ).

Se teclea punto y coma ( ; ) después de cada respuesta dada para poder ver más resultados.

Fuente del Problema

1 comentario: