Cursosā€Ž > ā€ŽMartes Anualā€Ž > ā€ŽBitĆ”coraā€Ž > ā€Ž

Clase 9 - Lógico

QuƩ vimos hoy?
  • Negación
  • Para todo (forall)
  • Individuos compuestos (functores y listas)
  • findall para armar listas de todos aquellos individuos que cumplan una condición
  • Hablamos mĆ”s de inversibilidad y orden superior
Tarea

Dada la siguiente Base de Conocimientos

poder(krilin, 3000).
poder(gohan, 4900).
poder(piccolo, 4200).
poder(goku, 5700).
poder(vegeta, 5600).
poder(goten, 4300).
poder(trunks, 4350).

loBancaA(krilin, gohan).
loBancaA(goku, gohan).
loBancaA(goku, krilin).
loBancaA(piccolo, gohan).
loBancaA(goten, trunks).
loBancaA(trunks, goten).
loBancaA(_, goku).

Armar un programa Prolog que cumpla las siguientes condiciones:

1) a) Decir cuÔl guerrero es el mÔs poderoso.
       Un guerrero es el mÔs poderoso si su poder es mayor al de todos los demas. Debe ser totalmente inversible.

Ā  Ā  b) Decir si un guerrero es solitario.
Ā  Ā  Ā  Ā  Un guerrero es Solitario si no lo banca ningun otro guerrero.Ā Debe ser totalmente inversible.

2) Realizar el predicadoĀ fusionesPosibles/2, que relaciona un guerrero con todas las fusiones posibles que este puede realizar con otro guerrero.
Dos guerreros pueden fusionarse si no son solitarios y
- el poder entre ambos guerreros es de una diferencia menor o igual a 100, o
- si ambos guerreros se bancan mutuamente.

Una fusión se modela con el functor fusion/2.

Ejemplo:
?- fusionesPosibles(goku, Fusiones).
Fusiones = [fusion(goku,gohan), fusion(goku,krilin)]
Porque todos bancan a Goku, o sea que se puede fusionar con todos los que Ʃl banque. No se fusiona con Vegeta porque es solitario.

Ayudita:Ā 
?- abs(-20, X).
X = 20.Ā 

3) Saber si alguien esGroso/1.
Un guerrero es groso si su poder es mayor a 5000.
Una fusión es grosa cuando el poder de cada uno de los guerreros que la componen es mayor a 4000.