-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
modernart.mzn
37 lines (25 loc) · 1.08 KB
/
modernart.mzn
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
33
34
35
36
37
include "gameplay.mzn";
enum Players;
enum Artists;
enum Rounds;
Players = {Player1, Player2, Player3,Player4};
% 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
Artists = {Krypto,KarlGitter,ChristinP,Yoko,LiteMetal};
Rounds = {Round1, Round2, Round3, Round4};
% Number of cards per round per player per artist
array[Rounds,Players,Artists] of var 0..15: visible_count_per_round_per_artist_per_player;
% First player every Round
array[Rounds] of var Players: first_player;
% Closing player every Round
array[Rounds] of var Players: last_player;
% Total points that an artist has in a given round
array[Rounds,Artists] of var 0..15: total_score_per_round_per_artist;
% Total number of a cards of an artist that were PLAYED this round
array[Rounds, Artists] of var 0..10: CardsForArtist;
% Number of Turns played by the closing player this round
array[Rounds] of var 0..10: NominalTurnCount;
% Symmetry Breaking
solve maximize Score[Player2];
output outputJSON();