% Een voorzet
% eigen implementatie xor (alleen True als X en Y verschillend zijn (X,Y)=(True,False) of (X,Y)=(False,True).
% operator \+ is de negatie operator \+ True = False, \+ False = True.
beweringFiets(X,Y):- X,\+Y.
beweringFiets(Y,X):- X,\+Y.
losOp(Fietsen):-
Kleuren = [groen,zwart,rood],
Typen = [racefiets,mountainbike,elektrisch],
member(K1,Kleuren),
member(K2,Kleuren),
member(K3,Kleuren),
member(T1,Typen),
member(T2,Typen),
member(T3,Typen),
Fietsen = [fiets(agaat,T1,K1 ),fiets(isa,T2,K2 ),fiets(nick,T3,K3 )],
K1\=K2, % K1 is niet gelijk aan K2 want we willen verschillende kleuren
... ,
beweringFiets(
member(fiets(nick,_,blauw),Fietsen ),
member(fiets(_,racefiets,zwart),Fietsen )). %uitspraken Nick
/** vraag die leidt tot de oplossing
?- findall(Fietsen,losOp(Fietsen),R),length(R,L).
*/
Antwoord: Code hier of leidt naar B.
We are greeted by five islanders who make the following statements:
A: “B is more than 20 years old.”
B: “C is more than 18 years old.”
C: “D is less than 22 years old.”
D: “E is not 17 years old.”
E: “A is more than 21 years old.”
A: “D is more than 16 years old.”
B: “E is less than 20 years old.”
C: “A is 19 years old.”
D: “B is 20 years old.”
E: “C is less than 18 years old.”
What is L? And what did we just learn about the ages of the islanders?
% Eis dat een persoon ouder is dan een leeftijd eis_ouder(Persoon, Leeftijd) :- Persoon > Leeftijd. % Eis dat een persoon jonger is dan een leeftijd eis_jonger(Persoon, Leeftijd) :- Persoon < Leeftijd. /**https://swish.swi-prolog.org/p/LiarsOnTheIsland.pl?- between(10,40,A),eis_ouder(A, 15),eis_jonger(A, 18). */