Skip to content

Instantly share code, notes, and snippets.

@JuanFdS
Created July 17, 2020 16:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JuanFdS/6987269c60aaa6bd03811256ee317bbd to your computer and use it in GitHub Desktop.
Save JuanFdS/6987269c60aaa6bd03811256ee317bbd to your computer and use it in GitHub Desktop.
Código de la clase de forall de PdeP
% El enunciado está en https://docs.google.com/document/d/12KmvUy8JmINbykXA-ilL0u7EY31L1d9a-vTiwHgWr2w/edit?usp=sharing
/*animal(Nombre,Clase, Medio)*/
animal(ballena,mamifero,acuatico).
animal(tiburon,pez,acuatico).
animal(lemur,mamifero,terrestre).
animal(golondrina,ave,aereo).
animal(tarantula,insecto,terrestre).
animal(lechuza,ave,aereo).
animal(orangutan,mamifero,terrestre).
animal(tucan,ave,aereo).
animal(puma,mamifero,terrestre).
animal(abeja,insecto,aereo).
animal(leon,mamifero,terrestre).
animal(lagartija,reptil,terrestre).
/* tiene(Quien, Que, Cuantos)*/
tiene(nico, ballena, 1).
tiene(nico, lemur, 2).
tiene(nico, golondrina, 1).
tiene(maiu, lemur, 1).
tiene(maiu, ballena, 1).
tiene(maiu, tiburon, 1).
tiene(maiu, golondrina, 1).
tiene(maiu, lechuza, 5).
tiene(maiu, orangutan, 1).
tiene(maiu, puma, 1).
tiene(maiu, abeja, 1).
tiene(maiu, lagartija, 1).
tiene(maiu, tarantula, 1).
tiene(juanDS, golondrina, 1).
tiene(juanDS, lechuza, 1).
tiene(juanR, tiburon, 2).
tiene(juanDS, puma, 1).
tiene(maiu, tucan, 1).
tiene(juanR, orangutan,1).
tiene(maiu,leon,2).
tiene(juanDS,lagartija,1).
tiene(feche,tiburon,1).
animalDificil(Animal):-
nadieTiene(Animal).
animalDificil(Animal):-
unicoPoseedor(Animal, UnicoPoseedor),
tiene(UnicoPoseedor, Animal, 1).
nadieTiene(Animal):-
animal(Animal, _, _),
not(tiene(_, Animal, _)).
unicoPoseedor(Animal, UnicoPoseedor):-
tiene(UnicoPoseedor, Animal, _),
not((tiene(OtraPersona, Animal, _),
UnicoPoseedor \= OtraPersona)).
% leGusta(Persona, Animal)
leGusta(nico, Animal):-
animal(Animal, _, terrestre),
Animal \= lemur.
leGusta(maiu, abeja).
leGusta(maiu, Animal):-
animal(Animal, Clase, _),
Clase \= insecto.
leGusta(juanDS, Animal):-
animal(Animal, _, acuatico).
leGusta(juanDS, Animal):-
animal(Animal, ave, _).
leGusta(juanR, Animal):-
tiene(juanR, Animal, _).
leGusta(feche, lechuza).
tieneParaIntercambiar(juanR, Animal):-
tiene(juanDS, Animal, _).
tieneParaIntercambiar(Persona, Animal):-
tiene(Persona, Animal, _),
puedePrescindirDe(Persona, Animal).
puedePrescindirDe(Persona, Animal):-
tiene(Persona, _, _),
animal(Animal, _, _),
not(leGusta(Persona, Animal)).
puedePrescindirDe(Persona, Animal):-
tiene(Persona, Animal, Cantidad),
Cantidad > 1.
tieneParaOfrecerle(Ofrecedor, Receptor):-
leGusta(Receptor, Animal),
tieneParaIntercambiar(Ofrecedor, Animal),
not(tiene(Receptor, Animal, _)).
puedenNegociar(UnaPersona,OtraPersona):-
tieneParaOfrecerle(UnaPersona, OtraPersona),
tieneParaOfrecerle(OtraPersona, UnaPersona).
% estaTriste(Persona):-
% tiene(Persona, _, _),
% not((tiene(Persona, Animal, _),
% leGusta(Persona, Animal))).
estaTriste(Persona):-
tiene(Persona, _, _),
forall(tiene(Persona, Animal, _),
not(leGusta(Persona, Animal))).
estaFeliz(Persona):-
tiene(Persona, _, _),
forall(tiene(Persona, Animal, _),
leGusta(Persona, Animal)).
tieneTodosDeMedio(Persona, Medio):-
tiene(Persona, _, _),
animal(_, _, Medio),
forall(tiene(Persona, Animal, _),
animal(Animal, _, Medio)).
tieneTodosDeClase(Persona, Clase):-
tiene(Persona, _, _),
animal(_, Clase, _),
forall(tiene(Persona, Animal, _),
animal(Animal, Clase, _)).
completoLaColeccion(Persona):-
tiene(Persona, _, _),
forall(
animal(Animal, _, _),
tiene(Persona, Animal, _)
).
manejaElMercado(Ofrecedor):-
tiene(Ofrecedor,_,_),
forall(
tiene(Persona,_,_),
tieneParaOfrecerle(Ofrecedor, Persona)
).
delQueMasTiene(Persona, AnimalQueSeRepiteMasVeces):-
tiene(Persona,
AnimalQueSeRepiteMasVeces,
VecesQueSeRepite),
forall(
(tiene(Persona, Animal, Veces), Animal \= AnimalQueSeRepiteMasVeces),
VecesQueSeRepite >= Veces
).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment