Advertisement
Guest User

Untitled

a guest
Nov 24th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 2.66 KB | None | 0 0
  1. all_members([H],L2) :- member(H,L2).
  2. all_members([H|T],L2) :- member(H,L2), all_members(T, L2).
  3.  
  4. all_not([H]) :- not(H).
  5. all_not([H|T]) :- not(H), all_not(T).
  6.  
  7. all_not_members([H],L2) :- not(member(H,L2)).
  8. all_not_members([H|T],L2) :- not(member(H,L2)), all_not_members(T, L2).
  9.  
  10. and([H]) :- H.
  11. and([H|T]) :- H, and(T).
  12. or([H]) :- H,!.
  13. or([H|_]) :- H,!.
  14. or([_|T]) :- or(T).
  15.  
  16. % [FOTOS, SEGUIDORES, CIDADE]
  17.  
  18. solve(Carlos, Fabiola, Geraldo, José, Luciana) :-
  19.     Carlos = [Carlos_fotos, Carlos_seguidores, Carlos_cidade],
  20.     Fabiola = [Fabiola_fotos, Fabiola_seguidores, Fabiola_cidade],
  21.     Geraldo = [Geraldo_fotos, Geraldo_seguidores, Geraldo_cidade],
  22.     Jose = [Jose_fotos, Jose_seguidores, Jose_cidade],
  23.     Luciana = [Luciana_fotos, Luciana_seguidores, Luciana_cidade],
  24.     % grouping
  25.     Todos = [Carlos, Fabiola, Geraldo, Jose, Luciana],
  26.     % ensure all values exist once
  27.     all_members([100, 110, 120, 130, 140], [Carlos_fotos, Fabiola_fotos, Geraldo_fotos, Jose_fotos, Luciana_fotos]),
  28.     all_members([102, 103, 104, 105, 106], [Carlos_seguidores, Fabiola_seguidores, Geraldo_seguidores, Jose_seguidores, Luciana_seguidores]),
  29.     all_members([Brasília,Florianópolis,Maceió,Manaus,SãoPaulo], [Carlos_cidade, Fabiola_cidade, Geraldo_cidade, Jose_cidade, Luciana_cidade]),
  30.     % clues from easy (fast) to hard (slow)
  31.     % Carlos
  32.     not(Carlos_cidade = Brasília),
  33.     not(Carlos_seguidores = 102),
  34.     member([Seg102_fotos,102,_], All),
  35.     Carlos_fotos - 10 =:= Seg102_fotos,
  36.     member([B_fotos,_,Brasília], All),
  37.     Carlos_fotos - 10 =:= B_fotos,
  38.     % Fabiola
  39.     not(Fabiola_cidade = Manaus),
  40.     not(Fabiola_cidade = Florianópolis),
  41.     not(Fabiola_cidade = SãoPaulo),
  42.     member([M_fotos,_,Manaus], All),
  43.     Fabiola_fotos - 20 =:= M_fotos,
  44.     member([F_fotos,_,Florianópolis], All),
  45.     Fabiola_fotos =:= F_fotos - 10,
  46.     % Geraldo
  47.     member([Luciana_fotos,Luciana_seguidores,Luciana_cidade], All),
  48.     Luciana_fotos - 30 =:= Geraldo_fotos,    
  49.     % Jose
  50.     not(Jose_cidade = Florianópolis),
  51.     not(Jose_cidade = Brasília),
  52.     member([_,F_seguidores,Florianópolis], All),
  53.     Jose_seguidores - 1 =:= F_seguidores,
  54.     member([_,B_seguidores,Brasília], All),
  55.     Jose_seguidores =:= B_seguidores - 1,    
  56.     % Luciana
  57.     Luciana_seguidores < 105,
  58.     % Dica 2, São Paulo
  59.     member([_,S_seguidores,SãoPaulo], All),
  60.     S_seguidores =:= Fabiola_seguidores - 1,
  61.     member([110,Seg110_seguidores,_], All),
  62.     S_seguidores - 2 =:= Seg110_seguidores,
  63.     % Dica 6, Maceió
  64.     member([M_fotos,103,Maceió], All),
  65.     member([Seg104_fotos,104,Seg104_cidade], All),
  66.     M_fotos =:= Seg104_fotos - 20,
  67.     not(Seg104_fotos = 140),
  68.     !.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement