Skip to content

Instantly share code, notes, and snippets.

@beerose
Created June 11, 2019 09:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save beerose/4dedd10767f0715bd2a90d3d4af468b0 to your computer and use it in GitHub Desktop.
Save beerose/4dedd10767f0715bd2a90d3d4af468b0 to your computer and use it in GitHub Desktop.
isMember(A, houses(A, _, _, _, _)).
isMember(A, houses(_, A, _, _, _)).
isMember(A, houses(_, _, A, _, _)).
isMember(A, houses(_, _, _, A, _)).
isMember(A, houses(_, _, _, _, A)).
isInMiddle(A, houses(_, _, A, _, _)).
isFisrt(A, houses(A, _, _, _, _)).
isNextTo(A, B, houses(B, A, _, _, _)).
isNextTo(A, B, houses(_, B, A, _, _)).
isNextTo(A, B, houses(_, _, B, A, _)).
isNextTo(A, B, houses(_, _, _, B, A)).
isNextTo(A, B, houses(A, B, _, _, _)).
isNextTo(A, B, houses(_, A, B, _, _)).
isNextTo(A, B, houses(_, _, A, B, _)).
isNextTo(A, B, houses(_, _, _, A, B)).
% house(Nationality, Color, Pet, Cigarette, Drink)
solve(Houses) :-
% Anglik ma czerwony dom
isMember(house(red, english, _, _, _), Houses),
% Hiszpan ma psa
isMember(house(_, spanish, dog, _, _), Houses),
% W zielonym domu pije się kawę
isMember(house(green, _, _, _, cofee), Houses),
% Ukrainiec pija herbatę
isMember(house(_, ukrainian, _, _, tea), Houses),
% Zielony dom sąsiaduje z białym
isNextTo(house(green, _, _, _, _), house(white, _, _, _, _), Houses),
% Właściciel węża pali winstony
isMember(house(_, _, snake, winston, _), Houses),
% W żółtym domu palą Koole
isMember(house(_, yellow, _, kool, _), Houses),
% W domu pośrodku piją mleko
isInMiddle(house(_, _, _, _, milk), Houses),
% Dom Norwega to pierszy z lewej
isFisrt(house(norwegian, _, _, _, _), Houses),
% Palacz Chesterfiledów jest sąsiadem własciciela lisa
isMember(house(_, _, fox, chesterfield, _), Houses),
% W domu sąsiadującym z właścicielem konia palą Koole
isNextTo(house(_, _, horse, _, _), house(_, _, _, kool, _), Houses),
% Palacz Lucky Strike pija sok
isMember(house(_, _, _, luckystrike, juice), Houses),
% Japończyk pali Kenty
isMember(house(japanese, _, _, kent, _), Houses),
% Norweg sąsiaduje z niebieskim domem
isNextTo(house(norwegian, _, _, _, _),house(_, blue, _, _, _), Houses),
% #1 zagadka -- Kto jest właścicielem słonia
isMember(house(_, _, elephant, _, _), Houses),
% #2 zagadka -- Kto pije wódkę
isMember(house(_, _, _, _, vodka), Houses).
drinksVodka(X) :-
solve(Houses),
isMember(house(X,_,_,_,vodka), Houses).
hasElephant(X) :-
solve(Houses),
isMember(house(X,_,elephant,_,_), Houses).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment