1
J'essaie de résoudre l'énigme Einstein en utilisant Prolog. Tâche estPuzzle Einstein dans Prolog
- Le Norvégien vit dans la première maison.
- Les Anglais vivent à la Maison Rouge.
- Les chiens suédois HAS Comme animaux de compagnie.
- Le Danois boit du thé.
- La Maison verte est sur la gauche de la Maison Blanche.
- L'homme qui vit dans la serre boit du café.
- L'homme qui fume Pall Mall élève des oiseaux.
- L'homme qui habite la maison jaune fume Dunhill.
- L'homme qui vit dans la maison du milieu boit du lait.
- L'homme qui fume Blends vit à côté de celui qui a des chats.
- L'homme qui garde les chevaux vit à côté de celui qui fume Dunhill.
- L'homme qui fume le Blue Master boit de la bière.
- L'Allemand fume Prince.
- Le Norvégien vit à côté du côté de la Maison Bleue.
- L'homme qui fume Mélange est voisin de celui qui boit de l'eau.
- Quelqu'un a un aquarium avec des poissons.
Le programme:
neighbor(Rua):-
length(Rua, 5),
Rua = [casa(_,noruegues,_,_,_)|_],
member(casa(vermelha,ingles,_,_,_),Rua),
member(casa(_,sueco,_,_,cachorros),Rua),
member(casa(_,dinamarques,cha,_,_),Rua),
esquerda(casa(verde,_,_,_,_), casa(branca,_,_,_,_),Rua),
member(casa(verde,_,cafe,_,_),Rua),
member(casa(_,_,_,pallmall,passaros),Rua),
member(casa(amarela,_,_,dunhill,_),Rua),
Rua = [_,_,casa(_,_,leite,_,_),_,_],
ao_lado(casa(_,_,_,blends,_), casa(_,_,_,_,gatos),Rua),
ao_lado(casa(_,_,_,_,cavalos), casa(_,_,_,dunhill,_),Rua),
member(casa(_,_,cerveja,bluemaster,_),Rua),
member(casa(_,alemao,_,prince,_),Rua),
ao_lado(casa(_,noruegues,_,_,_), casa(azul,_,_,_,_),Rua),
ao_lado(casa(_,_,_,blends,_), casa(_,_,agua,_,_),Rua),
member(casa(_,_,_,_,peixes),Rua).
ao_lado([X,Y|_],X, Y).
ao_lado([X,Y|_],Y, X).
ao_lado([_|L],X, Y):-
ao_lado(L, X, Y).
esquerda([A|As], A, E) :-
member2(E, As).
esquerda([_|As], A, E) :-
esquerda(As, A, E).
double possible de [Einstein Riddle avec Liste des termes] (http://stackoverflow.com/questions/36743498/einstein-riddle -with-list-of-terms) –