5 ludzi różnych narodowości zamieszkuje 5 domów w 5 różnych kolorach. Wszyscy palą papierosy 5 różnych marek i piją 5 różnych napojów. Hodują zwierzęta 5 różnych gatunków. Oto co wiemy.
- Norweg zamieszkuje pierwszy dom.
- Anglik mieszka w czerwonym domu.
- Zielony dom znajduje się bezpośrednio po lewej stronie domu białego.
- Duńczyk pija herbatkę.
- Palacz papierosów light mieszka obok hodowcy kotów.
- Mieszkaniec żółtego domu pali cygara.
- Niemiec pali fajkę.
- Mieszkaniec środkowego domu pija mleko.
- Palacz papierosów light ma sąsiada, który pija wodę.
- Palacz papierosów bez filtra hoduje ptaki.
- Szwed hoduje psy.
- Norweg mieszka obok niebieskiego domu.
- Hodowca koni mieszka obok żółtego domu.
- Palacz mentolowych pija piwo.
- W zielonym domu pija się kawę.
Kto hoduje rybki?
% Rozwiązanie zagadki Einsteina w języku Prolog % (kolor, narodowość, zwierzęta, napój, papierosy) :- op(100, xfy, na). Dom na Ulica :- member(Dom, Ulica). po_prawej(Lewy, Prawy, [Lewy | [Prawy | _]]). po_prawej(Lewy, Prawy, [_ | Reszta]) :- po_prawej(Lewy, Prawy, Reszta). obok(X, Y, Lista) :- po_prawej(X, Y, Lista). obok(X, Y, Lista) :- po_prawej(Y, X, Lista). fakty(Ulica) :- Ulica = [_, _, _, _, _], [dom(_, norweg, _, _, _) | _] = Ulica, dom(czerwony, anglik, _, _, _) na Ulica, po_prawej(dom(zielony, _, _, _, _), dom(bialy, _, _, _, _), Ulica), dom(_, dunczyk, _, herbata, _) na Ulica, obok(dom(_, _, _, _, lekkie), dom(_, _, koty, _, _), Ulica), dom(zolty, _, _, _, cygara) na Ulica, dom(_, niemiec, _, _, fajka) na Ulica, [_, _, dom(_, _, _, mleko, _), _, _] = Ulica, obok(dom(_, _, _, _, lekkie), dom(_, _, _, woda, _), Ulica), dom(_, _, ptaki, _, bez_filtra) na Ulica, dom(_, szwed, psy, _, _) na Ulica, obok(dom(_, norweg, _, _, _), dom(niebieski, _, _, _, _), Ulica), obok(dom(_, _, konie, _, _), dom(zolty, _, _, _, _), Ulica), dom(_, _, _, piwo, mentolowe) na Ulica, dom(zielony, _, _, kawa, _) na Ulica. hoduje_rybki(Kto, Ulica) :- fakty(Ulica), dom(_, Kto, rybki, _, _) na Ulica. hoduje_rybki(Kto) :- hoduje_rybki(Kto, _).