Skip to content

Instantly share code, notes, and snippets.

@thalesmg
Last active February 4, 2019 19:22
Show Gist options
  • Save thalesmg/3c647521eac8dc9a670e1eec50e04913 to your computer and use it in GitHub Desktop.
Save thalesmg/3c647521eac8dc9a670e1eec50e04913 to your computer and use it in GitHub Desktop.
Problema de Lógica Coquetel Desafio Super nº 176 p. 8 usando SWI-Prolog e CLP(FD)
:- use_module(library(clpfd)).
length_(L, Ls) :- length(Ls, L).
alldif([]).
alldif([X|Xs]) :-
maplist(dif(X), Xs),
alldif(Xs).
is_permutation(Xs, Ys) :-
msort(Xs, Sorted),
msort(Ys, Sorted).
resolver(Ps) :-
length(Ps, 5),
maplist(length_(4), Ps),
transpose(Ps, Attrs),
Attrs = [_Ns, Fs, Os, Ds],
maplist(length_(5), Attrs),
permutation([1, 2, 3, 4, 5], Ds),
permutation([touro, casablanca, semprejovem, starwars, bandidos], Fs),
permutation([favorito, amigo, quebrado, filho, esposa], Os),
Ps = [C, E, I, N, R],
C = [caio, _, _, _],
E = [eduardo, _, _, _],
I = [ivan, _, _, _],
N = [nicole, _, _, _],
R = [renata, _, _, _],
%% dica 1
member([renata, semprejovem, _, _], Ps),
%% dica 2
member([caio, _, _, DCaio], Ps),
member([nicole, _, _, DNicole], Ps),
member([NQ, _, quebrado, DQuebrado], Ps),
DCaio #> DNicole, DNicole #> DQuebrado,
NQ \= caio, NQ \= nicole,
%% dica 3
member([eduardo, _, _, DEduardo], Ps),
member([NE, _, esposa, DEsposa], Ps),
NE \= eduardo,
DEduardo #> DEsposa,
%% dica 4
member([renata, _, _, DRenata], Ps),
member([NA, FA, amigo, DAmigo], Ps),
DAmigo + 1 #= DRenata,
NA \= renata,
FA \= bandidos,
%% dica 5
member([_, casablanca, OC, DCasablanca], Ps), OC \= filho,
member([_, bandidos, _, DBandidos], Ps),
member([_, touro, _, DTouro], Ps),
DQuebrado + 1 #= DCasablanca,
DQuebrado #> DBandidos,
DQuebrado #> DTouro.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment