Declaratieve Talen/oplossingenContradicties
% 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).
--Greet