% Proseminar Programmiersprachen - Prolog % Beispielprogramm % % written by Johannes Weissl % Familienbeziehungen bei den Simpsons female(marge). female(lisa). female(maggie). male(grandpa). male(homer). male(bart). parent(grandpa,homer). parent(homer,bart). parent(homer,lisa). parent(homer,maggie). parent(marge,bart). parent(marge,lisa). parent(marge,maggie). % Die Loesung des Raetsels same_gender(X,Y) :- female(X), female(Y). same_gender(X,Y) :- male(X), male(Y). follow(A,B,[A,B|_]). follow(A,B,[_|T]) :- follow(A,B,T). unique([H|T]) :- not(member(H,T)), unique(T). unique([]). solve(X) :- X = [A,B,C,D], parent(D,C), same_gender(D,B), female(A), follow(lisa,Z,X), male(Z), Z \= bart, B \= grandpa, unique(X).