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.