% find the Zebra and the Water, zebra_water(X).
% by Willem Robert van Hage, wrvhage@science.uva.nl
right(2,1).
right(3,2).
right(4,3).
right(5,4).
nextdoor(X,Y) :- right(X,Y).
nextdoor(X,Y) :- right(Y,X).
match([],_).
match([X|Xs],Ys) :-
member(X,Ys),
match(Xs,Ys).
zebra_water(X) :-
nextdoor(Horse,Diplomat),
nextdoor(Fox,Doctor),
nextdoor(Norwegian,Blue),
Y = [house( Green, _, green, _, _, _),
house( White, _, white, _, _, _),
house(Norwegian, norwegian, _, _, _, _),
house( Blue, _, blue, _, _, _),
house( Fox, _, _, _, fox, _),
house( Doctor, _, _, doctor, _, _),
house( Horse, _, _, _, horse, _),
house( Diplomat, _, _, diplomat, _, _),
house( 3, _, _, _, _, milk),
house( 1, norwegian, _, _, _, _),
house( _, englishman, red, _, _, _),
house( _, spaniard, _, _, dog, _),
house( _, japanese, _, painter, _, _),
house( _, italian, _, _, _, tea),
house( _, _, yellow, diplomat, _, _),
house( _, _, green, _, _, coffee),
house( _, _, _, sculptor, snails, _),
house( _, _, _, violinist, _, juice),
house( _, _, _, _, zebra, _),
house( _, _, _, _, _, water) ],
X = [ house(1,_,_,_,_,_),
house(2,_,_,_,_,_),
house(3,_,_,_,_,_),
house(4,_,_,_,_,_),
house(5,_,_,_,_,_) ],
right(Green,White),
match(Y,X).
JSBmaW5kIHRoZSBaZWJyYSBhbmQgdGhlIFdhdGVyLCB6ZWJyYV93YXRlcihYKS4KJSBieSBXaWxsZW0gUm9iZXJ0IHZhbiBIYWdlLCB3cnZoYWdlQHNjaWVuY2UudXZhLm5sCgpyaWdodCgyLDEpLgpyaWdodCgzLDIpLgpyaWdodCg0LDMpLgpyaWdodCg1LDQpLgpuZXh0ZG9vcihYLFkpIDotIHJpZ2h0KFgsWSkuCm5leHRkb29yKFgsWSkgOi0gcmlnaHQoWSxYKS4KCm1hdGNoKFtdLF8pLgptYXRjaChbWHxYc10sWXMpIDotCiAgICAgICAgbWVtYmVyKFgsWXMpLAogICAgICAgIG1hdGNoKFhzLFlzKS4KCnplYnJhX3dhdGVyKFgpIDotCiAgICAgICAgbmV4dGRvb3IoSG9yc2UsRGlwbG9tYXQpLAogICAgICAgIG5leHRkb29yKEZveCxEb2N0b3IpLAogICAgICAgIG5leHRkb29yKE5vcndlZ2lhbixCbHVlKSwKICAgICAgICBZID0gW2hvdXNlKCAgICBHcmVlbiwgICAgICAgICAgXywgIGdyZWVuLCAgICAgICAgIF8sICAgICAgXywgICAgICBfKSwKICAgICAgICAgICAgIGhvdXNlKCAgICBXaGl0ZSwgICAgICAgICAgXywgIHdoaXRlLCAgICAgICAgIF8sICAgICAgXywgICAgICBfKSwKICAgICAgICAgICAgIGhvdXNlKE5vcndlZ2lhbiwgIG5vcndlZ2lhbiwgICAgICBfLCAgICAgICAgIF8sICAgICAgXywgICAgICBfKSwKICAgICAgICAgICAgIGhvdXNlKCAgICAgQmx1ZSwgICAgICAgICAgXywgICBibHVlLCAgICAgICAgIF8sICAgICAgXywgICAgICBfKSwKICAgICAgICAgICAgIGhvdXNlKCAgICAgIEZveCwgICAgICAgICAgXywgICAgICBfLCAgICAgICAgIF8sICAgIGZveCwgICAgICBfKSwKICAgICAgICAgICAgIGhvdXNlKCAgIERvY3RvciwgICAgICAgICAgXywgICAgICBfLCAgICBkb2N0b3IsICAgICAgXywgICAgICBfKSwKICAgICAgICAgICAgIGhvdXNlKCAgICBIb3JzZSwgICAgICAgICAgXywgICAgICBfLCAgICAgICAgIF8sICBob3JzZSwgICAgICBfKSwKICAgICAgICAgICAgIGhvdXNlKCBEaXBsb21hdCwgICAgICAgICAgXywgICAgICBfLCAgZGlwbG9tYXQsICAgICAgXywgICAgICBfKSwKICAgICAgICAgICAgIGhvdXNlKCAgICAgICAgMywgICAgICAgICAgXywgICAgICBfLCAgICAgICAgIF8sICAgICAgXywgICBtaWxrKSwKICAgICAgICAgICAgIGhvdXNlKCAgICAgICAgMSwgIG5vcndlZ2lhbiwgICAgICBfLCAgICAgICAgIF8sICAgICAgXywgICAgICBfKSwKICAgICAgICAgICAgIGhvdXNlKCAgICAgICAgXywgZW5nbGlzaG1hbiwgICAgcmVkLCAgICAgICAgIF8sICAgICAgXywgICAgICBfKSwKICAgICAgICAgICAgIGhvdXNlKCAgICAgICAgXywgICBzcGFuaWFyZCwgICAgICBfLCAgICAgICAgIF8sICAgIGRvZywgICAgICBfKSwKICAgICAgICAgICAgIGhvdXNlKCAgICAgICAgXywgICBqYXBhbmVzZSwgICAgICBfLCAgIHBhaW50ZXIsICAgICAgXywgICAgICBfKSwKICAgICAgICAgICAgIGhvdXNlKCAgICAgICAgXywgICAgaXRhbGlhbiwgICAgICBfLCAgICAgICAgIF8sICAgICAgXywgICAgdGVhKSwKICAgICAgICAgICAgIGhvdXNlKCAgICAgICAgXywgICAgICAgICAgXywgeWVsbG93LCAgZGlwbG9tYXQsICAgICAgXywgICAgICBfKSwKICAgICAgICAgICAgIGhvdXNlKCAgICAgICAgXywgICAgICAgICAgXywgIGdyZWVuLCAgICAgICAgIF8sICAgICAgXywgY29mZmVlKSwKICAgICAgICAgICAgIGhvdXNlKCAgICAgICAgXywgICAgICAgICAgXywgICAgICBfLCAgc2N1bHB0b3IsIHNuYWlscywgICAgICBfKSwKICAgICAgICAgICAgIGhvdXNlKCAgICAgICAgXywgICAgICAgICAgXywgICAgICBfLCB2aW9saW5pc3QsICAgICAgXywgIGp1aWNlKSwKICAgICAgICAgICAgIGhvdXNlKCAgICAgICAgXywgICAgICAgICAgXywgICAgICBfLCAgICAgICAgIF8sICB6ZWJyYSwgICAgICBfKSwKICAgICAgICAgICAgIGhvdXNlKCAgICAgICAgXywgICAgICAgICAgXywgICAgICBfLCAgICAgICAgIF8sICAgICAgXywgIHdhdGVyKSBdLAogICAgICAgIFggPSBbIGhvdXNlKDEsXyxfLF8sXyxfKSwKICAgICAgICAgICAgICBob3VzZSgyLF8sXyxfLF8sXyksCiAgICAgICAgICAgICAgaG91c2UoMyxfLF8sXyxfLF8pLAogICAgICAgICAgICAgIGhvdXNlKDQsXyxfLF8sXyxfKSwKICAgICAgICAgICAgICBob3VzZSg1LF8sXyxfLF8sXykgXSwKICAgICAgICByaWdodChHcmVlbixXaGl0ZSksCiAgICAgICAgbWF0Y2goWSxYKS4=