mirror of https://github.com/captn3m0/modernart
34 lines
1.2 KiB
MiniZinc
34 lines
1.2 KiB
MiniZinc
% DOUBLE CARDS
|
|
% - Double cards are counted as VISIBLE
|
|
% - Double cards CANNOT breach the 6 LIMIT
|
|
% Total number of DOUBLE CARDS for each artist = 1
|
|
% FOR EVERY ROUND+ARTIST combination, only 1 player should have played a double card
|
|
% TODO: Check if this is still correct after a second round
|
|
|
|
% Whether you played a double this round
|
|
array[Rounds,Players,Artists] of var bool: double_played;
|
|
|
|
|
|
constraint forall(a in Artists) (
|
|
sum(p in Players, r in Rounds) (double_played[r,p,a]) = 1
|
|
);
|
|
|
|
% What is the extra cards you can possibly play
|
|
array[Rounds,Players,Artists] of var bool: bonus_due_to_double_cards;
|
|
|
|
constraint forall(a in Artists, r in Rounds, p in Players) (
|
|
% If this player played more than 2 cards of this artist
|
|
if visible_count_per_round_per_artist_per_player[r,p,a] >=2
|
|
% And this artist is the winning artist this round
|
|
/\ row(sorted_artists_per_round,r)[1] = a
|
|
% And you closed this round
|
|
/\ visible_count_per_round_per_artist_per_player[r,p,a] = max_visible_cards
|
|
% and they are claiming their double now
|
|
/\ double_played[r,p,a] then
|
|
bonus_due_to_double_cards[r,p,a] = true
|
|
else
|
|
bonus_due_to_double_cards[r,p,a] = false
|
|
endif
|
|
);
|
|
|
|
% array[Rounds,Players] of var int: negs_due_to_double_cards; |