houses([
house(first, _, _, _, _, _),
house(second, _, _, _, _, _),
house(third, _, _, _, _, _),
house(forth, _, _, _, _, _),
house(fifth, _, _, _, _, _)
]).
right_of(A, B, [B, A | _]).
right_of(A, B, [_ | Y]) :- right_of(A, B, Y).
next_to(A, B, [A, B | _]).
next_to(A, B, [B, A | _]).
next_to(A, B, [_ | Y]) :- next_to(A, B, Y).
mymember(X, [X|_]).
mymember(X, [_|Y]) :- mymember(X, Y).
print_houses([]).
print_houses([A|B]) :-
print_houses(B).
where_fish(H):-houses(H),
mymember(house(_,red,english,_,_,_),H),
mymember(house(_,_,swedish,dog,_,_),H),
mymember(house(_,_,datman,_,tea,_),H),
right_of(house(_,green,_,_,_,_),
house(_,white,_,_,_,_),H),
mymember(house(_,green,_,_,coffe,_),H),
mymember(house(_,_,_,bird,_,pallmall),H),
H=[_,_,house(_,_,_,_,milk,_),_,_],
mymember(house(_,yellow,_,_,_,dunhill),H),
mymember(house(first,_,norway,_,_,_),H),
next_to(house(_,_,_,_,_,marlboro),
house(_,_,_,cat,_,_),H),
next_to(house(_,_,_,horse,_,_),
house(_,_,_,_,_,dunhill),H),
mymember(house(_,_,_,_,bear,winfield),H),
next_to(house(_,_,norway,_,_,_),
house(_,blue,_,_,_,_),H),
mymember(house(_,_,denmark,_,_,rothmans),H),
next_to(house(_,_,_,_,_,marlboro),
house(_,_,_,_,water,_),H),
print_houses(H).
:-where_fish(_).
aG91c2VzKFsKCWhvdXNlKGZpcnN0LCBfLCBfLCBfLCBfLCBfKSwKCWhvdXNlKHNlY29uZCwgXywgXywgXywgXywgXyksCglob3VzZSh0aGlyZCwgXywgXywgXywgXywgXyksCglob3VzZShmb3J0aCwgXywgXywgXywgXywgXyksCglob3VzZShmaWZ0aCwgXywgXywgXywgXywgXykKXSkuCgpyaWdodF9vZihBLCBCLCBbQiwgQSB8IF9dKS4KcmlnaHRfb2YoQSwgQiwgW18gfCBZXSkgOi0gcmlnaHRfb2YoQSwgQiwgWSkuCgpuZXh0X3RvKEEsIEIsIFtBLCBCIHwgX10pLgpuZXh0X3RvKEEsIEIsIFtCLCBBIHwgX10pLgpuZXh0X3RvKEEsIEIsIFtfIHwgWV0pIDotIG5leHRfdG8oQSwgQiwgWSkuCgpteW1lbWJlcihYLCBbWHxfXSkuCm15bWVtYmVyKFgsIFtffFldKSA6LSBteW1lbWJlcihYLCBZKS4KCnByaW50X2hvdXNlcyhbXSkuCnByaW50X2hvdXNlcyhbQXxCXSkgOi0KCXdyaXRlKEEpLCBubCwKCXByaW50X2hvdXNlcyhCKS4KCgp3aGVyZV9maXNoKEgpOi1ob3VzZXMoSCksCiAgICAgICAgICAgICAgIG15bWVtYmVyKGhvdXNlKF8scmVkLGVuZ2xpc2gsXyxfLF8pLEgpLAogICAgICAgICAgICAgICBteW1lbWJlcihob3VzZShfLF8sc3dlZGlzaCxkb2csXyxfKSxIKSwKICAgICAgICAgICAgICAgbXltZW1iZXIoaG91c2UoXyxfLGRhdG1hbixfLHRlYSxfKSxIKSwKICAgICAgICAgICAgICAgcmlnaHRfb2YoaG91c2UoXyxncmVlbixfLF8sXyxfKSwKICAgICAgICAgICAgICAgICAgICAgICAgaG91c2UoXyx3aGl0ZSxfLF8sXyxfKSxIKSwKICAgICAgICAgICAgICAgbXltZW1iZXIoaG91c2UoXyxncmVlbixfLF8sY29mZmUsXyksSCksCiAgICAgICAgICAgICAgIG15bWVtYmVyKGhvdXNlKF8sXyxfLGJpcmQsXyxwYWxsbWFsbCksSCksCiAgICAgICAgICAgICAgIEg9W18sXyxob3VzZShfLF8sXyxfLG1pbGssXyksXyxfXSwKICAgICAgICAgICAgICAgbXltZW1iZXIoaG91c2UoXyx5ZWxsb3csXyxfLF8sZHVuaGlsbCksSCksCiAgICAgICAgICAgICAgIG15bWVtYmVyKGhvdXNlKGZpcnN0LF8sbm9yd2F5LF8sXyxfKSxIKSwKICAgICAgICAgICAgICAgbmV4dF90byhob3VzZShfLF8sXyxfLF8sbWFybGJvcm8pLAogICAgICAgICAgICAgICAgICAgICAgIGhvdXNlKF8sXyxfLGNhdCxfLF8pLEgpLAogICAgICAgICAgICAgICBuZXh0X3RvKGhvdXNlKF8sXyxfLGhvcnNlLF8sXyksCiAgICAgICAgICAgICAgICAgICAgICAgaG91c2UoXyxfLF8sXyxfLGR1bmhpbGwpLEgpLAogICAgICAgICAgICAgICBteW1lbWJlcihob3VzZShfLF8sXyxfLGJlYXIsd2luZmllbGQpLEgpLAogICAgICAgICAgICAgICBuZXh0X3RvKGhvdXNlKF8sXyxub3J3YXksXyxfLF8pLAogICAgICAgICAgICAgICAgICAgICAgIGhvdXNlKF8sYmx1ZSxfLF8sXyxfKSxIKSwKICAgICAgICAgICAgICAgbXltZW1iZXIoaG91c2UoXyxfLGRlbm1hcmssXyxfLHJvdGhtYW5zKSxIKSwKICAgICAgICAgICAgICAgbmV4dF90byhob3VzZShfLF8sXyxfLF8sbWFybGJvcm8pLAogICAgICAgICAgICAgICAgICAgICAgIGhvdXNlKF8sXyxfLF8sd2F0ZXIsXyksSCksCiAgICAgICAgICAgICAgIHByaW50X2hvdXNlcyhIKS4KCjotd2hlcmVfZmlzaChfKS4=