lunes, 25 de octubre de 2010

.: Lenguajes Lógicos (CO) :.

:: Caballos ::



Materia. Lenguajes de Programación

Hora. M1 -M3 (Martes)

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:

“Caballos”


El caballo de Mac es más oscuro que el de Smith, pero más rápido y más viejo que el de Jack, que es aún más lento que el de Willy, que es más joven que el de Mac, que es más viejo que el de Smith, que es más claro que el de Willy, aunque el de Jack es más lento y más oscuro que el de Smith. ¿Cuál es el más viejo, cuál el más lento y cuál el más claro?


Para la solución, primeramente obtuve las siguientes preposiciones de acuerdo a la redacción y luego las clasifique de acuerdo a las categorías de las preguntas que plantea el problema:


*Edad
  1. El caballo de Mac es más viejo que el caballo de Jack
  2. El caballo de Willy es más joven que el caballo de Mac
  3. El caballo de Mac es más viejo que el caballo de Smith
*Velocidad


  1. El caballo de Mac es más rápido que el caballo de Jack
  2. El caballo de Jack es más lento que el caballo de Willy.
  3. El caballo de Jack es más lento que el caballo de Smith
*Tonalidad de color
  1. El caballo de Mac es más oscuro que el caballo de Smith
  2. El caballo de Smith es más claro que el caballo de Willy
  3. El caballo de Jack es más oscuro que el caballo de Smith
Para poder obtener la solución, ordené a cada caballo de cada uno de las personas mencionadas en orden decreciente, dependiendo quien era más que el otro.


Por ejemplo, si nos vamos a la sección de edad, se obtiene lo siguiente:


**Edad (El más viejo)
  1. Mac
  2. Jack
  3. Willy
  4. Smith
Hay de aclarar que los últimos tres lugares son arbitrarios, pues lo único que nos interesa aquí es notar que el caballo de Mac es el más viejo de los cuatro.


Analizando las clasificaciones obtenemos lo siguiente:


**Velocidad (El más lento)
  1. Jack
  2. Mac
  3. Willy
  4. Smith
**Tonalidad de Color (El más claro)
  1. Smith
  2. Mac
  3. Willy
  4. Jack
Por consiguiente, tenemos los siguientes resultados:
  • Caballo más viejo. El de Mac.
  • Caballo más lento. El de Jack.
  • Caballo más claro. El de Smith
Como se puede apreciar, nunca pensé que fuera a ser así de sencillo. Meter este problema en prolog tampoco tuvo gran ciencia, como pueden apreciarlo en el código a continuación:

Código en Prolog.

Al momento que ejecuten swi-prolog en el terminal, seguir estas intrucciones:
  • consult('Caballos.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.

PD. Fue demasiado fácil al final, considerando que el código está bien hecho y el problema se planteó de manera correcta.

Saludos a todos.


Fuente del Problema.


__________. “Lógica”. http://platea.pntic.mec.es/jescuder/logica.htm




2 comentarios:

  1. Excelente, tres puntos completos por el reporte 5.

    ResponderEliminar
  2. Y también un punto para el R6 por la codificación. Una explicación de ello y ejemplo de ejecución te ganaría el otro punto como punto extra.

    ResponderEliminar