miércoles, 27 de octubre de 2010

Reporte # 5 Problema Logico

Caballeros y bribones
Hay tres personas Alex, Brook y Cody; uno de los cuales es un caballero, un bribón , y un espía.El caballero siempre dice la verdad, el bribón siempre dice mentiras, y el espía puede mentir o decir la verdad.Alex dice: "Cody es un bribón."Brook ha dicho: "Alex es un caballero."Cody dice: "Yo soy el espía."¿Quién es el caballero, que el bribón, y que el espía?


Solución:


Alex dice que Cody es un bribon y Cody dice que el es el espía, por lo tanto uno de los dos miente. Además Brook afirma que Alex es el caballero y si afirma eso entonces Cody es el mentiroso y por lo tanto es el bribon. Brook seria el espía, ya que si fuera el caballero también lo seria Alex, pero eso no es posible.

Entonces la solución es que: 
Alex es el caballero, Brook es el espía y Cody es el bribón.





Aquí ya les agrego las pantalla del problema resuelto en Prolog y un ejemplo adicional.

Hay que ser muy claros en los enunciados que utilizamos para no tener errores ya que Prolog es un lenguaje casi puro.
 En algunos enunciados  me respondía que no por lo errores que cometía en la sintaxis del enunciado, ya que los escribí diferentes a como los había declarado en los predicados.


En este ejemplo adicional es uno que vi el semestre pasado en matemáticas discretas sobre automoviles y camionetas. Habla sobre la marca, el precio , el color y el kilómetraje del automovil o camioneta.Ademas de que le cambie el color de contorno y letra que es lo que tambien nos permite Prolog.


Aquí una pequeña información sobre Prolog:
Los programas en Prolog se componen de cláusulas de Horn que constituyen reglas del tipo "Si es verdad el antecedente, entonces es verdad el consecuente". No obstante, la forma de escribir las cláusulas de Horn es al contrario de lo habitual. Primero se escribe el consecuente y luego el antecedente. El antecedente puede ser una conjunción de condiciones que se denomina secuencia de objetivos. Cada objetivo se separa con una coma y puede considerarse similar a una instrucción o llamada a procedimiento de los lenguajes imperativos. En Prolog no existen instrucciones de control. Su ejecución se basa en dos conceptos: la unificación y el backtracking.
Gracias a la unificación, cada objetivo determina un subconjunto de cláusulas susceptibles de ser ejecutadas. Cada una de ellas se denomina punto de elección. Prolog selecciona el primer punto de elección y sigue ejecutando el programa hasta determinar si el objetivo es verdadero o falso.
En caso de ser falso entra en juego el backtracking, que consiste en deshacer todo lo ejecutado situando el programa en el mismo estado en el que estaba justo antes de llegar al punto de elección. Entonces se toma el siguiente punto de elección que estaba pendiente y se repite de nuevo el proceso. Todos los objetivos terminan su ejecución bien en éxito ("verdadero"), bien en fracaso ("falso").




http://es.wikipedia.org/wiki/Prolog


Saludos!

 


12 comentarios:

  1. Bien. Entonces sigue quedando pendiente el programa con Prolog.

    Calificación: 1/1 =)

    Saludos...

    ResponderEliminar
  2. muy bien explicado tu problema, solo te falta el programa en prolog.
    pero todo muy bien (: sigue asi.

    ResponderEliminar
  3. Me gustó el programa adicional de prolog, yo también lo acabo de ver hace poco en discretas.

    ResponderEliminar
  4. a pense que era el mismo problema que el mio, pero no trata de otra cosa, esta muy bien explicaste bien la solucion, y ya con la imagen se entiende mejor

    ResponderEliminar
  5. hola!!

    me gusto lo que hiciste con los programas ..ademas poner algo extra nunca esta de mas .. bien x ti !

    =)

    ResponderEliminar
  6. Muy bien tu reporte, la explicacion esta muy bien, que padre que pudiste realizarlo en prolog tambien.

    ResponderEliminar
  7. hola! que bbien resolviste tu problema, y que bueno que pusiste informacion e imagenes =)

    ResponderEliminar
  8. me gusto como explicaste el programa en prolog se entiende muy bien y pues lo redactaste bien tambien :D

    ResponderEliminar
  9. Hola estan muy bien tus programas, ademas de que pusiste una definción de cada unno de ellos

    ResponderEliminar
  10. Hola creo que tenemos la misma version de Prolog. esta version lei que era de las mejores o mas bien un poco mas entendible. Me agrado como explicaste tu problema pues le entendi y aparte tu redaccion me parecio bien

    ResponderEliminar
  11. esta muy bien el desarrollo del problema logico y las pantallas de ejecucion felicidades

    ResponderEliminar