Adds current best score on the README

This commit is contained in:
Nemo 2020-06-13 17:29:08 +05:30
parent 6b2fdcd835
commit 5d2aa084de
3 changed files with 29 additions and 13 deletions

View File

@ -2,6 +2,16 @@
This is a [MiniZinc](https://www.minizinc.org/) based attempt to solve the [Modern Art: Masters Gallery](https://boardgamegeek.com/boardgame/40381/masters-gallery) game.
The current partial implementation (see below for missing rules) results in a highest possible score of 242. (`*` = Award given to artist).
|Player 1|Player 2|Player 3|A|B|C|D|E|
|--------|--------|--------|-|-|-|-|-|
|AA* |AA |AA |5|0|0|1|2|
|AAAEE* |BBCC*E |D*EEEE |7|0|0|4|7|
|AAAAAEEEE|ABBBDDDDE|BBCCCCCA|10|0|0|5|9|
|AAAAAAEEE|BBBBCCCDD|B*CCDDDEE|13|0|0|6|11|
|*242* = 10+35+86+111|*65* = 10+4+39+12|*87* = 10+32+5+40|
## Plan
- Implement all of the game ruleset in MiniZinc.
@ -97,10 +107,11 @@ We subdivide the score into the following sections:
### Missing Constraints
- [ ] Since the model misses out on the turn-dynamics, and treats symbols as global counters (instead of being attached to specific cards), there are some additional constraints that will be required. Without these, I'm expecting to see the same card being used for multiple symbols. Some sort of Symbol counter per round that keeps track of total number of cards you've claimed for symbols would be a better approach.
- [ ] Second card face down.
- [ ] Simultaneous play
- [ ] "Additional Card Play". Every round, all players can opt to play one extra card per artist they've already played. Note that this rule is very ambigously worded in the rules. I'm planning to implement the "blessed" variant. See https://boardgamegeek.com/thread/473713/playing-additional-cards-during-scoring for more details.
- [ ] Symbol - Draw One Card
- [ ] Symbol - Second card face down
- [ ] Symbol - Simultaneous play
- [ ] Since the model misses out on the turn-dynamics, and treats symbols as global counters (instead of being attached to specific cards), there are some additional constraints that will be required. Without these, I'm expecting to see the same card being used for multiple symbols. Some sort of **Symbol counter** per round that keeps track of total number of cards you've claimed for symbols would be a better approach.
- [ ] **Additional Card Play**. Every round, all players can opt to play one extra card per artist they've already played. Note that this rule is very ambigously worded in the rules. I'm planning to implement the "blessed" variant. See https://boardgamegeek.com/thread/473713/playing-additional-cards-during-scoring for more details.
## TODO

View File

@ -1,14 +1,17 @@
include "globals.mzn";
% include "globals.mzn";
% Since the documentation is unclear, wrote this test to figure
% out whether enums wrap around or not.
% enum Letters;
enum Letters;
Letters = {A,B,C};
var Letters: x;
var Letters: y;
var Letters: z;
var Letters: a;
var Letters: b;
constraint a=A;
constraint b=B;
constraint x = enum_next(Letters, y);
constraint y = B;
% This is unsatisfiable, because nothing comes after x=C
constraint z = enum_next(Letters, x);
var set of Letters: d;
constraint d = set_diff(Letters,a..b);

View File

@ -4,9 +4,11 @@ enum Artists;
enum Rounds;
Players = {Nemo, Jana, Adam};
% 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};