Skip to content

Instantly share code, notes, and snippets.

@OniOni
Created October 20, 2011 10:49
Show Gist options
  • Save OniOni/1300877 to your computer and use it in GitHub Desktop.
Save OniOni/1300877 to your computer and use it in GitHub Desktop.
LOL je suis ton père MDR
% Déclaration (données)
femme(emma).
femme(vero).
femme(lola).
femme(nikky).
femme(june).
femme(cecile).
femme(kerry).
femme(josiane).
homme(jean).
homme(mathieu).
homme(stan).
homme(alex).
homme(lulu).
homme(jc).
homme(robert).
homme(michel).
homme(yves).
homme(jerome).
parent(nikky, mathieu).
parent(nikky, emma).
parent(nikky, jean).
parent(jc, mathieu).
parent(jc, emma).
parent(jc, jean).
parent(vero, cecile).
parent(vero, stan).
parent(vero, alex).
parent(michel, cecile).
parent(michel, alex).
parent(lola, vero).
parent(june, nikky).
parent(michel, stan).
parent(lulu, michel).
parent(robert, jc).
parent(robert, jerome).
parent(june, kerry).
parent(lola, josianne).
%===================================== CODE LOL =====================================
mere(X, Y) :- parent(X, Y), femme(X).
pere(X, Y) :- parent(X, Y), homme(X).
parent2(X, Y) :- mere(X, Y) ; pere(X, Y).
parents_de(X, L) :- setof((Y), parent2(Y, X), L).
enfant(X, Y) :-
parent(Y, X).
fratrie(X, Y) :-
enfant(X, Z), enfant(Y, Z), X \== Y.
frere(X, Y) :-
fratrie(X, Y), homme(X).
soeur(X, Y) :-
fratrie(X, Y), femme(X).
fratrie_de(X, R) :-
setof((Y), fratrie(X, Y), R).
%tante_internal(H, L, init) :- tantes_et_oncles(H, []).
%tante_internal([], _) :- true.
%tante_internal([H|Q], S) :- setof((A), fratrie(H, A), Res), append(S, Res, S2),
% tante_internal(Q, S2).
%tantes_et_oncles(X, L) :- parents_de(X, ListeParents),
% tante_internal(ListeParents, L).
tante_ou_oncle(X, Y) :-
parent(Z, Y), fratrie(X, Z).
tantes_et_oncles(X, L) :-
mere(M, X), pere(P, X),
fratrie_de(M, L1),
fratrie_de(P, L2),
append(L1, L2, L).
famille(X, Y) :-
fratrie(X, Y) ; parent(X, Y) ; enfant(X, Y).
ancetre(X, Y) :-
parent(X, Y).
ancetre(X, Y) :-
parent(Z, Y), ancetre(X, Z).
descendant(X, Y) :-
parent(Y, X).
descendant(X, Y) :-
parent(Y, Z), descendant(X, Z).
meme_sang(X, Y) :-
fratrie(X, Y);
parent(X, Y);
enfant(X, Y);
ancetre(X, Y);
descendant(X, Y);
(ancetre(Z, X), descendant(Y, Z));
(ancetre(Z, Y), descendant(X, Z)).
show_title(A) :- string_to_atom(Chaine, A), string_to_list(Chaine, Liste),
to_title(Liste, Titre), write(Titre).
to_title([H|Q], Title) :- to_upper(H, U), string_to_list(Debut, [U]),
string_to_list(Fin, Q), string_concat(Debut, Fin, Title).
affiche([Y|[]]) :- show_title(Y), write('.').
affiche([X|Y]) :- show_title(X), write(', '), affiche(Y).
affiche([]) :- true.
aff_genea([Y|X]) :- write(Y), write(' : '), parents_de(Y, L), affiche(L), nl, aff_genea(L), aff_genea(X).
aff_genea([]) :- true.
aff_genea(_) :- write('-'), nl, true.
@jankeromnes
Copy link

noooooooooo(Luke, Vador).

@cnotin
Copy link

cnotin commented Oct 24, 2011

kill(me, now).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment