2020-06-10 19:17:54 +00:00
|
|
|
include "gameplay.mzn";
|
2020-06-10 13:03:07 +00:00
|
|
|
enum Players;
|
|
|
|
enum Artists;
|
|
|
|
enum Rounds;
|
|
|
|
|
2020-07-20 21:01:58 +00:00
|
|
|
Players = {Player1, Player2, Player3,Player4};
|
2020-06-13 11:59:08 +00:00
|
|
|
|
2020-06-11 13:54:22 +00:00
|
|
|
% The order here is opposite of what you'd usually use while playing the game
|
|
|
|
% because this results in LiteMetal getting a higher numeric value and that makes
|
|
|
|
% sorting much easier
|
2020-06-13 11:59:08 +00:00
|
|
|
|
2020-06-10 13:03:07 +00:00
|
|
|
Artists = {Krypto,KarlGitter,ChristinP,Yoko,LiteMetal};
|
2020-06-10 22:15:17 +00:00
|
|
|
Rounds = {Round1, Round2, Round3, Round4};
|
2020-06-10 13:03:07 +00:00
|
|
|
|
|
|
|
% Number of cards per round per player per artist
|
2020-06-13 19:26:05 +00:00
|
|
|
array[Rounds,Players,Artists] of var 0..15: visible_count_per_round_per_artist_per_player;
|
2020-06-10 14:11:00 +00:00
|
|
|
|
2020-06-10 18:44:01 +00:00
|
|
|
% First player every Round
|
|
|
|
array[Rounds] of var Players: first_player;
|
|
|
|
|
|
|
|
% Closing player every Round
|
|
|
|
array[Rounds] of var Players: last_player;
|
|
|
|
|
2020-06-10 14:11:00 +00:00
|
|
|
% Total points that an artist has in a given round
|
2020-06-13 19:26:05 +00:00
|
|
|
array[Rounds,Artists] of var 0..15: total_score_per_round_per_artist;
|
2020-06-10 13:03:07 +00:00
|
|
|
|
2020-06-10 14:11:00 +00:00
|
|
|
% Total number of a cards of an artist that were PLAYED this round
|
2020-06-13 19:26:05 +00:00
|
|
|
array[Rounds, Artists] of var 0..10: CardsForArtist;
|
2020-06-10 22:15:17 +00:00
|
|
|
|
|
|
|
% Number of Turns played by the closing player this round
|
2020-06-13 19:26:05 +00:00
|
|
|
array[Rounds] of var 0..10: NominalTurnCount;
|
2020-06-10 13:03:07 +00:00
|
|
|
|
2020-06-13 19:26:05 +00:00
|
|
|
% Symmetry Breaking
|
|
|
|
|
2020-07-20 21:01:58 +00:00
|
|
|
solve maximize Score[Player2];
|
2020-07-20 20:45:03 +00:00
|
|
|
|
2020-07-21 06:14:19 +00:00
|
|
|
output outputJSON();
|