Je débute en Prolog et j'ai encore beaucoup de mal à transcrire les règles de mes problèmes.
Par exemple, dans un de mes problèmes je dois reconstruire un tableau qui pourrait me rappeler tous les détails de 5 foires auxquelles j'ai participe.
Voilà pour l'énoncé. A partir de ces règles, j'ai dressé 4 listes de données.1. Les cinqs mois ou ont eu lieu les foires sont Mars, Mai, Juin, Aout, Septembre.
2. Les cinqs villes qui ont accueilli les foires sont Lille, Marseille, Bordeaux, Paris, Toulouse.
3. Le nombre d'exposants sont 180, 200, 240, 260, 280.
4. Les longueurs des stands sont 3, 4, 5, 6, 7 metres.
5. La foire de Lille attira 240 exposants.
6. La foire de 200 exposants n'eut lieu ni en Aout, ni en Septembre.
7. La foire de Mai attira 40 personnes de moins que celle de Paris.
8. La foire de Bordeaux eut lieu en Juin
9. La foire de Toulouse n'eut pas lieu en Mai
10. La foire de Paris n'eut pas lieu en septembre
11. A la foire de Paris j'avais un stand de 3 metres.
12. A la foire de 200 exposants j'avais un stand de 4 metres.
13. A la foire de Bordeaux mon stand faisait 2 metres de plus qu'a la foire de180 exposants.
Ensuite j'ai essayé de transcrire les règles :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 domain([Mars, Mai, Juin, Aout, Septembre],1,5), all_different([Mars, Mai, Juin, Aout, Septembre]), domain([Lille, Marseille, Bordeaux, Paris, Toulouse],1,5), all_different([Lille, Marseille, Bordeaux, Paris, Toulouse]), domain([180, 200, 240, 260, 280],1,5), all_different([180, 200, 240, 260, 280]), domain([3, 4, 5, 6, 7],1,5), all_different([3, 4, 5, 6, 7]),
Mes questions :
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 % 5 Lille #= 240, % 6 ((Aout #/= 200) #/\ (Septembre #/= 200)), % 7 %moins40Personnes(Mai, Paris), % 8 Bordeaux #= Juin, % 9 Toulouse #/= Mars, % 10 Paris #/= Septembre, % 11 Paris #= 3, % 12 200 #= 4, % 13 % plus2Metres(Bordeaux,180),
- D'abord je ne sais pas du tout si la manière d'écrire mes règles est correcte.
- Ensuite, pour les règles 6 et 13, je pense que l'écrire des prédicats est une solution mais je ne sais pas du tout comment les implémenter. Par exemple, est-ce correct d'écrire : Bordeaux = 180 (exposants) + 2 (metres) ? Ca me semble illogique. On n'additionne pas des pommes avec des poires ?
- Enfin, pour une résolution de mon problème en backtracking, comment organiser l'appel des règles ?
Merci infiniment pour ceux qui prendront le temps de m'écrire un mot.
Partager