Cursos‎ > ‎Viernes Tarde‎ > ‎Trabajos Prácticos‎ > ‎Tp Lógico‎ > ‎

tp2 Lógico

TP Lógico - 2012

Espionaje


La agencia SD-6 posee una base de conocimientos con las características de sus agentes, que utiliza para seleccionarlos y armar equipos que envía a diferentes partes del mundo a cumplir misiones de espionaje.





Los agentes pueden ser espías, francotiradores, ninjas o tirabombas, lo que se representa mediante el predicado agente/2, que relaciona el nombre del agente con el correspondiente functor, de la siguiente manera.


  • Los agentes espías saben hablar varios idiomas


agente(sloane, espia([ingles, frances, italiano])).


  • De cada agentes francotirador se sabe la distancia máxima a la que aciertan sus disparos

agente(vaughn, francotirador(150)).


  • Un agente tirabombas se caracteriza por la cantidad de explosivos que puede arrojar


agente(bristow, tirabombas(26)).

agente(irina,  tirabombas(4)).


  • Los agentes que son ninjas conocen una determinada disciplina y disponen de una serie de armas

agente(guillermo, ninja(judo, [estrellita,nunchaku])).

agente(emilio, ninja(karate, [sai])).


El predicado misión/3 relaciona a una misión con agentes que requiere y el tipo de misión:

mision(unViolinistaEnElTejado, 2, asesinato).

mision(expresoDeOriente, 4, volarTren).

mision(extermineitors, 2, exterminio).


Las misiones, de acuerdo con su objetivo, tienen distintos requerimientos. Cada uno de estos lo puede cumplir cualquiera de los agentes, excepto en las misiones de exterminio, caso en el cual todos los agentes deben cumplir todos los requisitos.

requisito(asesinato, sigilo).

requisito(asesinato, distancia(100)). /*francotirador*/

requisito(volarTren, explosivos(11)). /*cant. de bombas*/

requisito(volarTren, idioma(italiano)). /*espía*/

requisito(volarTren, fuerza).

requisito(exterminio, fuerza).

requisito(exterminio, sigilo).

Requerimientos

Hacer los siguientes predicados, de manera que sean totalmente inversibles a menos que se indique lo contrario.

1) cumpleRequisito/2 que permite saber si un agente cumple con un requisito (No se requiere que este predicado sea inversible para el primer parámetro.)
  • Los francotiradores son los únicos que pueden actuar a distancia, siempre que esa distancia no sobrepase su distancia máxima de acierto en los disparos.
  • Los explosivos solo los manejan los tirabombas. Cada tirabombas debe poder llevar la cantidad de explosivos suficiente para cumplir un requisito.
  • Solo los espías que hablan bien ciertos idiomas pueden hacerse pasar por nativos.
  • Los espías y los ninjas son sigilosos.
  • Los ninjas son fuertes, al igual que los tirabombas.

?- cumpleRequisito(explosivos(11),A).

A = bristow;

?- cumpleRequisito(distancia(100),A).

A = vaughn


2) esUtil/2, que relaciona el nombre de una misión con cada agente que cumple con algún requisito de la misma.

?- esUtil(extermineitors, Quien).

Quien = sloane ;

Quien = guillermo ;


3) esIndispensable/2, que relaciona una misión y a un agente cuando este agente es el único que cumple con un algún requerimiento de la misión. (Hacer dos soluciones alternativas, una de ellas sin utilizar listas auxiliares)

?- esIndispensable(unViolinistaEnElTejado, Quien).

Quien = vaughn (porque es el único que cumple el requerimiento de distancia(100))


4) rambo/1, que se cumple para un agente si este es útil para todas las misiones.

?- rambo(guillermo).

Yes.


5) equipoPosible/2, que relaciona a una misión y un conjunto de agentes útiles para la misma. Considerar la cantidad de agentes requerida.

?- equipoPosible(unViolinistaEnElTejado, Equipo).

Equipo = [sloane, vaughn];

...


6) eshImposhible/1, que se cumple para aquella misión para la cual ningún equipo posible cumple todos los requisitos.

?- eshImposhible(Mision).

Mision = expresoDeOriente


7) estoEstaLlenoDeNinjas/1, que se cumple para aquella misión en la que todos los equipos posibles están formados únicamente por ninjas.

?- estoEstaLlenoDeNinjas(extermineitors).

Yes.

Comments