I have a problem with zebra puzzle.
rightOf(A,B,(B,A,_,_,_)).
rightOf(A,B,(_,B,A,_,_)).
rightOf(A,B,(_,_,B,A,_)).
rightOf(A,B,(_,_,_,B,A)).
middleHouse(A,(_,_,A,_,_)).
firstHouse(A,(A,_,_,_,_)).
nextTo(A,B,(A,B,_,_,_)).
nextTo(A,B,(_,A,B,_,_)).
nextTo(A,B,(_,_,A,B,_)).
nextTo(A,B,(_,_,_,A,B)).
nextTo(A,B,(B,A,_,_,_)).
nextTo(A,B,(_,B,A,_,_)).
nextTo(A,B,(_,_,B,A,_)).
nextTo(A,B,(_,_,_,B,A)).
house[Nationality,Pet,Sport,Drinks,Colour].
zebra_owner(Owner) :-
houses(Houses),
exists(house(Owner,zebra,_,_,_), Houses).
length(5,Houses),
exists(house(british,_,_,_,red),Houses),
exists(house(spanish,dog,_,_,_),Houses),
exists(house(_,_,_,coffe,green),Houses),
exists(house(ukrainian,_,_,tea,_),Houses),
rightOf(house(_,_,_,_,green),house(_,_,_,_,ivory),Houses),
exists(house(_,snail,tennis,_,_),Houses),
exists(house(_,_,chess,_,yellow),Houses),
middleHouse(house(_,_,_,mlik,_),Houses),
firstHouse(house(norwegian,_,_,_,_),Houses),
nextTo(house(_,_,rugby,_,_),house(_,fox,_,_,_),Houses),
nextTo(house(_,_,chess,_,_),house(_,horse,_,_,_),Houses),
exists(house(_,_,volleyball,orangejuice,_),Houses),
exists(house(japanese,_,_,_,_),Houses),
nextTo(house(norwegian,_,_,_,_),house(_,_,_,_,blue),Houses),
nextTo(house(_,_,_,tea,_),house(_,_,_,milo,_),Houses),
exists(house(zebra_owner,zebra,_,_,_),Houses).
Under
house[Nationality,Pet,Smokes,Drinks,Colour].
I see the error: Singleton variables: house[Nationality,Pet,Smokes,Drinks,Colour]
.
And when I write ?- zebra_owner(Owner)
I see the error: procedure 'houses(A)' does not exist. Reachable from:
zebra_owner(A).`