Hola a todos !!
Hoy subo el parcial resuelto del Paradigma Lógico de ThunderCats. En caso de que lleguen a encontrar algún error avisen, pero lo probe y funcionaba bastante bien.
En seArmoLaHecatombe(Lista) use sort(Lista,ListaFilyOrd) donde ListaFilyOrd es la "Lista" ordenada y sin duplicados. Use ese predicado porque sinRepetidos(Lista,ListaFil), que es el que te piden usar en el parcial (no hay que desarrollarlo), no existe como predicado, y la verdad no tenía ganas de hacerlo X) jajaja asi que use uno predeterminado que hace lo mismo y mejor porque te lo ordena.
Parcial Thundercats (Guia)
Resuelto
personaje(thundercat(leonO, 5)).
personaje(thundercat(jaga, 0)).
personaje(thundercat(panthro, 4)).
personaje(thundercat(cheetara, 3)).
personaje(thundercat(tigro, 3)).
personaje(thundercat(grune, 4)).
personaje(mutante(reptilio, 4)).
personaje(mutante(chacalo, 2)).
personaje(mutante(buitro, 2)).
personaje(mutante(mandrilok, 3)).
personaje(lunatack(luna)).
personaje(lunatack(chilla)).
personaje(momia(mummRa)).
personaje(momia(mummRana)).
traidor(grune).
traidor(chacalo).
lider(thundercat, leonO).
lider(mutante, reptilio).
lider(lunatack, luna).
guia(jaga).
viveEn(personaje(thundercat(Nom,F)),cubilFelino):-personaje(thundercat(Nom,F)),not(traidor(Nom)).
viveEn(personaje(mutante(Nom,F)),madriguera):-personaje(mutante(Nom,F)).
viveEn(personaje(momia(Nom)),piramide):-personaje(momia(Nom)).
faccion(Faccion):-lider(Faccion,_).
faccion(Faccion):-personaje(momia(Faccion)).
caracteristicas(Nombre,thundercat,Fuerza):-personaje(thundercat(Nombre,Fuerza)).
caracteristicas(Nombre,mutante,Fuerza):-personaje(mutante(Nombre,Fuerza)).
caracteristicas(Nombre,Nombre,8):-personaje(momia(Nombre)).
caracteristicas(Nombre,lunatack,3):-personaje(lunatack(Nombre)).
esArmonico(Personajes):-faccion(Faccion),caracteristicas(Personaje,Faccion,_),findall(Personaje,not(traidor(Personaje)),Posibles),subconjunto(Posibles,Personajes),Personajes\=[].
esArmonico(Personajes):-findall(Personaje,traidor(Personaje),Posibles),subconjunto(Posibles,Personajes),Personajes\=[].
subconjunto([],[]).
subconjunto(Lista,[X|Xs]):-select(X,Lista,Sublista),subconjunto(Sublista,Xs).
subconjunto(Lista,[X]):-member(X,Lista).
esGuiaDe(mummRa,Guiado):-malo(Guiado),Guiado\=mummRa.
esGuiaDe(Guia,Guiado):-caracteristicas(Guia,Faccion,_),caracteristicas(Guiado,Faccion,_),guia(Guia),lider(Faccion,Guiado),Guia\=Guiado.
esGuiaDe(Guia,Guiado):-caracteristicas(Guia,Faccion,Fuerza1),caracteristicas(Guiado,Faccion,Fuerza2),not(guia(Guiado)),Fuerza1>Fuerza2.
malo(Nombre):-personaje(lunatack(Nombre)).
malo(Nombre):-personaje(mutante(Nombre,_)).
malo(Nombre):-personaje(momia(Nombre)).
malo(Nombre):-traidor(Nombre).
fuerzaGuiada(Personaje,FuerzaTot):-caracteristicas(Personaje,_,F1),findall(Fuerza,(esGuiaDe(Personaje,Guiado),caracteristicas(Guiado,_,Fuerza)),Fuerzas),sumlist([F1,Fuerzas],FuerzaTot).
nivelDeGuia(Personaje,Nivel):-esGuiaDe(Personaje,Guiado),nivelDeGuia(Guiado,SubNivel),Nivel is SubNivel + 1.
nivelDeGuia(Personaje,1):-esGuiaDe(Personaje,_).
seArmoLaHecatombe(Personajes):-findall(Faccion,(member(X,Personajes),caracteristicas(X,Faccion,_)),Facciones),sort(Facciones,FaccionesFil),length(FaccionesFil,Cant),Cant>=3.