Last active
April 24, 2016 16:14
-
-
Save lovasoa/c66f02a83026d634ed720f92cc4ef8f0 to your computer and use it in GitHub Desktop.
On a plusieurs tables, à chaque table ne peuvent se trouver que deux équipes. Il y a plusieurs tours, et à chaque tour chaque équipe change de table. Le but est de se faire rencontrer toutes les équipes, et que chaque équipe passe à chaque table.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| % On organise un grand jeu. Il y a dix équipes, et neuf tables. À chaque tour de jeu, | |
| % chaque table peut être soit occuppée, soit vide. Si elle est occuppée, alors deux équipes | |
| % différentes s'y affrontent. À la fin du jeu, il faut que toutes les équipes se soient rencontrées, | |
| % et que chacune soit passée par chaque table. Le but est d'organiser le jeu pour faire le | |
| % moins de tours possible. | |
| equipe(1..10). | |
| table(1..9). | |
| tour(1..20). | |
| % On ne peut pas être à deux tables en même temps | |
| :- equipe(E), tour(T), table(TABLE1), table(TABLE2), TABLE1 != TABLE2, participe(E, T, TABLE1), participe(E, T, TABLE2). | |
| % Il ne peut y avoir plus de deux équipes à la même table en même temps | |
| 0{participe(A, TOUR, TABLE) : equipe(A) }2 :- table(TABLE), tour(TOUR). | |
| % Une équipe ne peut pas participer seule | |
| 1{participe(B, TOUR, TABLE) : equipe(B), B!=A}1 :- equipe(A), table(TABLE), tour(TOUR), participe(A, TOUR, TABLE). | |
| % Une équipe participe une seule fois à chaque table | |
| 1{participe(E, TOUR, TABLE) : tour(TOUR)}1 :- equipe(E), table(TABLE). | |
| % Deux équipes ont combattu si elles ont participé à la même table en même temps | |
| combattu(A,B) :- participe(A, TOUR, TABLE), participe(B, TOUR, TABLE), table(TABLE), tour(TOUR), A<B. | |
| % Toutes les équipes doivent avoir combattu | |
| :- equipe(A), equipe(B), A<B, not combattu(A,B). | |
| % Un tour est joué si une personne a participé à un match | |
| tourjoue(TOUR) :- tour(TOUR), participe(A, TOUR, TABLE), equipe(A), table(TABLE). | |
| % Les tours joués sont consécutifs | |
| :- not tourjoue(T1), tourjoue(T2), T2 != 1, T2 = T1 + 1. | |
| % Chaque tour donne une pénalité | |
| :~ tourjoue(TOUR), tour(TOUR). [1, TOUR] | |
| #show participe/3. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment