% To Do een predicaat meetegen(P,A) schrijven dat teruggeeft of die
% antwoordletter in contradictie is met een andere antwordleter.
% In een graaf ziet een contradictie eruit indien er een lus is.
% Algemene Strategie : we gaan voor de gegeven antwoordletter het pad
% doorheen de graaf volgen en kijken of we een pad naar onszelf tegen
% komen
%Prolog feiten:
antwoord(jan,c,[a,b,d,e]).
antwoord(jan,i,[f,k,c,b]).
antwoord(jan,j,[i,f,h,e]).
antwoord(jan,k,[j,h,g,d]).
buren(X,Y):-antwoord(_,X,Lijst),
member(Y,Lijst).
% buren in de andere richting zou je hier ook makkelijk kunnen
% definieren, maar dit is in ons geval niet nodig.
meetegen(P,A):-antwoord(P,A,_),
doorloopGraaf(P,A,A,[A]),!.
doorloopGraaf(P,A,B,Pad):- buren(A,X),
(
\+ member(X,Pad)->
append(Pad,[X],New),
doorloopGraaf(P,X,B,New)
;
true
).
%maak een predikaat tegen(P,Tegens)
tegen(P,Tegens):- findall(X,doorloopGraaf(P,X,X,[]),Tegens).