UTNianos

Versión completa: Parcial Lógico ThunderCats
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
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.

Gracias! Luego lo reviso =D Ahora ando con el TP de Logico, donde me pedía listas sin duplicados use lo siguiente:


removerDuplicados([], []).
removerDuplicados([X | Xs], Y) :- member(X, Xs), removerDuplicados(Xs, Y).
removerDuplicados([X | Xs], [X | Ys]) :- not(member(X, Xs)), removerDuplicados(Xs, Ys).


Y llamo el predicado de la siguiente manera:

removerDuplicados(ListaAux, ListaSO)
URLs de referencia