Bonsoir,
je dois trouver le métier de 6 artisans :
M. Boulanger (père et fils)
M. Charpentier (père et fils)
M. Boucher (père et fils)
On sait que :
- chacun des six fait un des métiers indiqués par ces noms de familles (c’est-à-dire le métier de boulanger, boucher ou charpentier), cependant le métier de chacun est différent de celui désigné par son nom de famille (par exemple aucuns des deux boucher père ou fils ne fait le métier de boucher).
- aucuns des fils ne fait le même métier que son propre père.
- M. Boulanger le père fait le même métier que M. Charpentier le fils.
-M. Boucher le fils est boulanger.
Voici mon code:
Mon problème est que je n’arrive pas à « dire » à prolog qu’aucuns fils ne fait le même métier que son propre père et que le M. Boulanger le père fait le même métier que M. Charpentier le fils.
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 %les 3 métiers metier(boulanger). metier(boucher). metier(charpentier). %les 3 fils: fils(fboulanger). fils(fboucher). fils(fcharpentier). %les 3 pères pere(pboulanger). pere(pboucher). pere(pcharpentier). %j'ai mis "p" pour signifier père et "f" pour fils au début de chaque nom de famille exerce(pboulanger,X) :-metier(X), X\==boulanger. exerce(pcharpentier,X) :-metier(X), X\==charpentier. exerce(pboucher,X) :-metier(X), X\==boucher. exerce(fboulanger,X) :-metier(X), X\==boulanger. exerce(fcharpentier,X) :-metier(X), X\==charpentier. exerce(fboucher,X) :- metier(X), X==boulanger.
J'ai essayé plusieurs méthodes mais c'est la seule qui se rapproche de ce que je veux.
Merci d'avance à celles et/ou ceux qui voudront m'aider
ps: j'ai réussi à trouver le métier de chacun sans prolog mais bon c'est pas vraiment le but...
Partager