From cbaf338cdfc27d676f07b1b3abb4b93b1d595065 Mon Sep 17 00:00:00 2001
From: Nemo
Date: Sat, 13 Jun 2020 20:59:41 +0530
Subject: [PATCH] Gecode solver functional
---
README.md | 2 +-
gameplay.mzn | 16 ++++++++--------
ranking.mzn | 4 +++-
3 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/README.md b/README.md
index 3a8132c..49d6512 100644
--- a/README.md
+++ b/README.md
@@ -119,7 +119,7 @@ Outside of constraints, I've to get to the following:
- [ ] Improve output formatting
- [ ] Get JSON output to render outside of the solver
-- [ ] Get Gecode and other solvers working
+- [x] Get Gecode and other solvers working
## Cards Dealt Table
diff --git a/gameplay.mzn b/gameplay.mzn
index e84c224..6a5b92e 100644
--- a/gameplay.mzn
+++ b/gameplay.mzn
@@ -88,34 +88,34 @@ constraint first_player[Round4] = if last_player[Round3] = card(Players) then 1
constraint Pn1 = if (first_player[Round1] < last_player[Round1]) then
first_player[Round1]..last_player[Round1]
else
- set_diff(Players,first_player[Round1]..last_player[Round1])
+ Players diff (first_player[Round1]..last_player[Round1])
endif;
constraint Pn2 = if (first_player[Round2] < last_player[Round2]) then
first_player[Round2]..last_player[Round2]
else
- set_diff(Players,first_player[Round2]..last_player[Round2])
+ Players diff first_player[Round2]..last_player[Round2]
endif;
constraint Pn3 = if (first_player[Round3] < last_player[Round3]) then
first_player[Round3]..last_player[Round3]
else
- set_diff(Players,first_player[Round3]..last_player[Round3])
+ Players diff first_player[Round3]..last_player[Round3]
endif;
constraint Pn4 = if (first_player[Round4] < last_player[Round4]) then
first_player[Round4]..last_player[Round4]
else
- set_diff(Players,first_player[Round4]..last_player[Round4])
+ Players diff first_player[Round4]..last_player[Round4]
endif;
-constraint Px1 = set_diff(Players,Pn1);
-constraint Px2 = set_diff(Players,Pn2);
-constraint Px3 = set_diff(Players,Pn3);
-constraint Px4 = set_diff(Players,Pn4);
+constraint Px1 = Players diff Pn1;
+constraint Px2 = Players diff Pn2;
+constraint Px3 = Players diff Pn3;
+constraint Px4 = Players diff Pn4;
constraint forall(p in Players) (p in Pn1 -> TotalCardsPlayed[Round1, p] = NominalTurnCount[Round1]);
constraint forall(p in Players) (p in Pn2 -> TotalCardsPlayed[Round2, p] = NominalTurnCount[Round2]);
diff --git a/ranking.mzn b/ranking.mzn
index da6f409..a9b3d6f 100644
--- a/ranking.mzn
+++ b/ranking.mzn
@@ -8,7 +8,9 @@ array[Rounds,1..card(Artists)] of var Artists: sorted_artists_per_round;
array[Rounds,Artists] of var bool: IsArtistRanked;
% Decide the top artists by picking the cards per artist for that round, and sorting them
-constraint forall(r in Rounds)(row(sorted_artists_per_round,r)= reverse(arg_sort(row(CardsForArtist, r))));
+constraint forall(r in Rounds)(
+ row(sorted_artists_per_round,r)= reverse(arg_sort(row(CardsForArtist, r)))
+);
% Top three artists get ranking score in each round as 3,2,1 others get 0
constraint forall(r in Rounds) (ranking_score_per_artist_per_round[r, row(sorted_artists_per_round,r)[1]] = 3);