Bonjour, voilà mon problème :
énoncé :
5 maisons de différentes couleurs sont habitées par des hommes de nationalités différentes, possédant chacun un animal différent, fumant des cigarettes de marques différentes et buvant des boissons différentes.
Voici maintenant les différents indices connus et comment je les ai traduit :
1. L'anglais vit dans la maison rouge.
2. L'espagnol possède un chien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part nationalite(A|1,anglais), couleur(A|1,rouge)
3. Dans la maison verte, on boit du café.
Code : Sélectionner tout - Visualiser dans une fenêtre à part nationalite(A|2,espagnol), animal(A|2,chien)
4. L'ukrainien boit du thé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part couleur(A|3,vert), boisson(A|3,cafe)
5. La maison verte est juste à droite de celle de couleur ivoire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part nationalite(A|4,ukrainien), boisson(A|4,the)
6. Le fumeur de Winston élève des escargots.
Code : Sélectionner tout - Visualiser dans une fenêtre à part position(A1|5,A2|5,Rep), couleur(A1|5,ivoire), couleur(A2|5,vert)
7. Dans la maison jaune on fume des kools.
Code : Sélectionner tout - Visualiser dans une fenêtre à part cigarette(A|6,winston), animal(A|6,escargot)
8. L'habitant de la maison du milieu boit du lait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part couleur(A|7,jaune), cigarette(A|7,kools)
9. Le norvégien habite la première maison à gauche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part milieu(A|8,Rep), boisson(A|8,lait)
10. L'homme qui fume des chesterfield habite à côté de la maison du renard.
Code : Sélectionner tout - Visualiser dans une fenêtre à part premier(A|9,Rep), nationalite(A|9,norvegien)
11. Dans la maison voisine de celle du cheval on fume des kools.
Code : Sélectionner tout - Visualiser dans une fenêtre à part voisin(A1|10,A2|10,Rep), cigarette(A1|10,chesterfield), animal(A2|10,renard)
12. Le buveur de jus d'orange fume des lucky strike.
Code : Sélectionner tout - Visualiser dans une fenêtre à part voisin(A1|11,A2|11,Rep), cigarette(A1|11,kools), animal(A2|11,cheval)
13. Le japonais fume des parliaments.
Code : Sélectionner tout - Visualiser dans une fenêtre à part boisson(A|12,jusdorange), cigarette(A|12,luckystrike)
14. Le norvégien habite à côté de la maison bleue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part nationalite(A|13,japonais), cigarette(A|13,parliaments)
Pouvez-vous me dire si mes clauses conviennent ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 voisin(A1|14,A2|14,Rep), nationalite(A1|14,norvegien), couleur(A2|14,bleu)
Voici les définitions :
Le programme n'a pas d'erreur quand je le lance mais il me sort qu'il n'y a aucune solution ... si vous souhaitez le programme en entier pour tester, faites le moi savoir. Merci beaucoup pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 /* position(A, B, L) <= A est avant B dans la liste L. * Pour le problème du zèbre, nous considérons la première maison celle qui se trouve le plus à gauche. */ position(A, B, [A, B, _C, _D, _E]). position(A, C, [A, _B, C, _D, _E]). position(A, D, [A, _B, _C, D, _E]). position(A, E, [A, _B, _C, _D, E]). position(B, C, [_A, B, C, _D, _E]). position(B, D, [_A, B, _C, D, _E]). position(B, E, [_A, B, _C, _D, E]). position(C, D, [_A, _B, C, D, _E]). position(C, E, [_A, _B, C, _D, E]). position(D, E, [_A, _B, _C, D, E]). /* voisin(A, B, L) <= A est le voisin de B dans la liste L. */ voisin(A, B, [A, B, _C, _D, _E]). voisin(B, A, [A, B, _C, _D, _E]). voisin(B, C, [_A, B, C, _D, _E]). voisin(C, B, [_A, B, C, _D, _E]). voisin(C, D, [_A, _B, C, D, _E]). voisin(D, C, [_A, _B, C, D, _E]). voisin(D, E, [_A, _B, _C, D, E]). voisin(E, D, [_A, _B, _C, D, E]). /* premier(A, L) <= A est le premier élément de la liste L. */ premier(A, [A, _B, _C, _D, _E]). /* milieu(C, L) <= C est l'élément du milieu de la liste L. */ milieu(C, [_A, _B, C, _D, _E]). /* attribut(P, A) <= A est l'attribut du personnage P. */ couleur(a(C, _N, _A, _G, _B), C). nationalite(a(_C, N, _A, _G, _B), N). animal(a(_C, _N, A, _G, _B), A). cigarette(a(_C, _N, _A, G, _B), G). boisson(a(_C, _N, _A, _G, B), B).
Partager