Cursos‎ > ‎Sábados Mañana - Anual‎ > ‎

Tp2 Lógico

Para el segundo TP de lógico van a tener que implementar los siguientes ejercicios de las guías

Guía 2 - Ejercicio 3
Armar un programa Prolog que resuelva el siguiente problema lógico:
  • Un asesino siempre odia a su víctima y nunca es más rico que ella. El asesino de la tía Agatha, además, vive en la mansión Dreadbury.
  • Tía Agatha, el carnicero y Charles son las únicas personas que viven en la mansión Dreadbury.
  • Charles odia a todas las personas de la mansión que no son odiadas por la tía Agatha.
  • Agatha odia a todos los que viven en la mansión, excepto al carnicero.
  • Quien no es odiado por el carnicero y vive en la mansión, es más rico que tía Agatha
  • El carnicero odia a las mismas personas que odia tía Agatha.
Al programa le tengo que poder preguntar quién es el asesino de la tía Agatha, y tiene que brindar una sola respuesta.



Guía 3 - Ejercicio 2
Se registra el ingreso de distintas personas en cada mes del año, mediante el predicado ingreso/3, por ejemplo:
ingreso(roque,enero,2000).
ingreso(roque,febrero,3500).
ingreso(roque,marzo,1200).
ingreso(luisa,enero,2500).
ingreso(luisa,febrero,850).

y se tiene la relación padre/2 que indica padre(Hijo, Padre), por ejemplo para decir que Luisa es la madre de Roque se agrega esta cláusula:
padre(roque,luisa).
(léase "uno de los padres de Roque es Luisa").

Definir estos predicados:
  • buenPasar/1, que se verifica para una persona si se cumple alguna de estas condiciones: 
    • en enero ganó más de 2200, 
    • en algún mes ganó más de 3000, 
    • ganó más de 2500 en dos meses distintos (esto se puede hacer sin listas, usar el \= para decir que los meses son distintos).
  • mesFilial/2, que relaciona una persona X con un mes si en ese mes hay algún hijo de X que haya ganado más X. 
Por ejemplo, con la información del ejemplo, la respuesta a la consulta:
?- mesFilial(luisa,febrero).
debería ser Yes.
Verificar en el SWI que este predicado es totalmente inversible.
  • ingresoTotal/2 que relaciona una persona con su ingreso total de una persona en el año; entendiendo que toda la información de la base de conocimiento corresponde al mismo año.
  • ingresoFamiliar/2, que relaciona una persona con su ingreso familiar en el año; el ingreso familiar de una persona es su ingreso total más la suma de los ingresos totales de sus hijos.


Guía 5 - Ejercicio 3 
Armar un programa para una central telefónica que permita realizar derivaciones de llamadas. La central funciona de la siguiente manera: 
En la base de conocimientos tenemos registrados a todos los empleados y sus jefes, y el área al que pertencen los jefes. Por ejemplo: 
empleado(juan). 
empleado(marcelo). 
empleado(adriana). 
empleado(francisco). 
empleado(alberto). 
empleado(cristian). 
empleado(mariana).
 
jefe(marcelo, juan). 
jefe(marcelo, adriana). 
jefe(mariana, cristian). 

area(marcelo, administracion) 
area(mariana, ventas). 

En la base se registran también los internos de las personas. Por ejemplo:  
interno(marcelo, 2244). 
interno(adriana, 2245). 
interno(francisco, 4441). 
interno(alberto, 4442). 
interno(mariana, 1212). 

También se registran los gerentes y sus asistentes.  
gerente(alberto, administracion). 
asistente(francisco, alberto). 

Programar las siguientes reglas: 

1- internoDe(Persona, Interno) 
Relaciona una persona con su interno. Si la persona no tiene interno, relaciona una persona con el interno de su jefe. 

2- quienAtiende(Interno, Persona) 
Dice quien atiende un interno. Si llaman al interno de un jefe, hace que atienda cualquiera de sus empleados. Si llaman al interno de un gerente, hace que atienda su asistente. En cualquier otro caso, atiende la persona dueña del interno. 

3- dependeDe(Persona, Persona) 
Dice si la primer persona depende de la segunda persona. Una persona "A" depende de una persona "B", si "B" es jefe de "A", o si "B" es gerente del área donde trabaja "A". 

4- puedeTransferir(interno, interno) 
Dos internos se pueden transferir si pertenecen a empleados que dependen de la misma persona. Para resolverla utilizar la regla dependeDe. 

5- pertenecen ([internos], [internos]). 
"Quita" de una lista de números telefónicos, los que NO pertenecen a internos de la empresa. 

6- personas( [Personas], [internos]) 
"Devuelve" de una lista de personas, sus internos. Para resolverla utilizar la regla internoDe.