Skip to content

Instantly share code, notes, and snippets.

@gastonprieto
Last active September 2, 2016 22:42
Show Gist options
  • Save gastonprieto/617615b8681cbe6dd78004244780d3e2 to your computer and use it in GitHub Desktop.
Save gastonprieto/617615b8681cbe6dd78004244780d3e2 to your computer and use it in GitHub Desktop.
neomascotas.pl
usuario(Usuario):-perfil(Usuario, _, _).
% 1.a
mascota(john, draik(amarillo, 100, [volar(720)], [peluca, pantalon, remera]).
% 1.b
% No hace falta definir lo que no tengo, por principio de universo cerrado va a dar falso.
% 1.c
amigo(peter, kayla). %% Puede ser bidireccional si quieren
amigo(kayla, joe). %% Puede ser bidireccional si quieren
% 2.a
% mascota(marc, _).
% 2.b
% usuario(Usuario), not(mascota(Usuario, _)).
% 3
puedeRegalar(Alguien, Otro):-
amigo(Alguien, Otro),
perfil(Otro, publico, _).
puedeRegalar(Alguien, Otro):-
amigo(Alguien, Amigo),
puedeRegalar(Amigo, Otro).
% 4
mascotaHackeada(Mascota):-
mascota(_, Mascota),
fueHackeada(Mascota).
fueHackeada(Mascota):-
color(Mascota),
especie(Mascota),
not(colorAdecuado(Color, Especie)).
fueHackeada(Mascota):-
inteligencia(Mascota, Inteligencia),
Inteligencia > 4000,
not(nerd(Mascota)).
nerd(Mascota):-
especie(Mascota, Especie),
Especie \= eyrie.
especie(eyrie(_,_,_,_), eyrie).
especie(draik(_,_,_,_), draik).
especie(blumaru(_,_,_), blumaru).
inteligencia(eyrie(_,Inteligencia,_,_), Inteligencia).
inteligencia(draik(_,Inteligencia,_,_), Inteligencia).
inteligencia(blumaru(_,Inteligencia,_), Inteligencia).
colorAdecuado(_, rojo).
colorAdecuado(_, azul).
colorAdecuado(_, amarillo).
colorAdecuado(blumaru, zombie).
colorAdecuado(blumaru, transparente).
colorAdecuado(draik, chocolate).
colorAdecuado(draik, hielo).
colorAdecuado(eyrie, darigan).
colorAdecuado(eyrie, desierto).
% 5.
plataformaExitosa(Fecha):-
cantidadUsuariosTotales(Total),
cantidadUsuariosQueAccedieronDespuesDe(Fecha, TotalQueAccedio),
PorcentajeAcceso is TotalQueAccedio * 100 / Total,
PorcentajeAcceso > 90.
cantidadUsuariosTotales(Total):-
findall(Usuario, usuario(Usuario), Usuarios),
length(Usuarios, Total).
cantidadUsuariosQueAccedieronDespuesDe(Fecha, Total):-
findall(Usuario, (usuario(Usuario), UltimoAcceso > Fecha), Usuarios),
length(Usuarios, Total).
% 6
equipoSabiondo(Usuario):-
usuario(Usuario),
forall(mascota(Usuario, Mascota), sabionda(Mascota)).
sabionda(Mascota):-
inteligencia(Mascota, Inteligencia),
Inteligencia > 3000.
% 7
copion(Usuario):-
amigo(Usuario, Amigo),
forall(mascota(Amigo, Mascota), seCopio(Usuario, Mascota)).
seCopio(Usuario, Mascota):-
mascota(Usuario, PosibleCopia),
esCopia(PosibleCopia, Mascota).
esCopia(Copia, Mascota):-
especie(Copia, Especie),
especie(Mascota, Especie),
ropas(Copia, Ropas),
ropas(Mascota, OtrasRopas),
sonConjuntosEquivalentes(Ropas, OtrasRopas).
sonConjuntosEquivalentes(Conjunto, OtroConjunto):-
forall(member(Elemento, Conjunto), member(Elemento, OtroConjunto)),
forall(member(Elemento, OtroConjunto), member(Elemento, Conjunto)).
% 8
temerario(Usuario):-
mascota(Usuario, Mascota),
habilidad(Mascota, escupirFuego),
tieneMasDeNVoladorasVeloces(Usuario, 5).
tieneMasDeNVoladorasVeloces(Usuario, N):-
findall(Mascota, (
mascota(Usuario, Mascota), habilidad(Mascota, Habilidad), vueloVeloz(Habilidad) )
, Mascotas),
length(CantidadVoladorasVeloces, Mascotas),
CantidadVoladorasVeloces > 5.
vueloVeloz(volar(Velocidad)):- Velocidad > 500.
habilidad(eyrie(_, _, Habilidad, _), Habilidad).
habilidad(draik(_, _, Habilidades, _), Habilidad):-
member(Habilidad, Habilidades).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment