diff --git a/README.md b/README.md index 605cb70..e8ae3aa 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ 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 298 for a 2 player game. See [games/03.md](games/03.md) for the complete episode. There are a few more games available in [the games directory](games/) +The current partial implementation (see below for missing rules) results in a highest possible score of 301 for a 2 player game. See [games/04.md](games/04.md) for the complete episode. There are a few more games available in [the games directory](games/) ## Plan diff --git a/games/04.json b/games/04.json new file mode 100644 index 0000000..d71b401 --- /dev/null +++ b/games/04.json @@ -0,0 +1,28 @@ +{ + "visible_count_per_round_per_artist_per_player" : [[[0, 0, 0, 1, 4], [2, 1, 1, 0, 1]], [[4, 0, 0, 1, 4], [1, 1, 4, 3, 0]], [[0, 0, 1, 1, 4], [0, 0, 4, 2, 0]], [[5, 0, 1, 0, 4], [0, 4, 3, 3, 0]]], + "first_player" : [{"e":"Nemo"}, {"e":"Nemo"}, {"e":"Nemo"}, {"e":"Nemo"}], + "last_player" : [{"e":"Jana"}, {"e":"Jana"}, {"e":"Jana"}, {"e":"Nemo"}], + "total_score_per_round_per_artist" : [[6, 0, 0, 1, 9], [9, 0, 0, 2, 11], [9, 0, 3, 3, 13], [12, 0, 4, 3, 15]], + "CardsForArtist" : [[2, 1, 1, 1, 5], [5, 1, 4, 4, 4], [0, 0, 5, 3, 4], [5, 4, 4, 3, 4]], + "NominalTurnCount" : [5, 9, 6, 10], + "Score" : [301, 66], + "MaxVisibleCards" : 5, + "TotalCardsPlayed" : [[5, 5], [9, 9], [6, 6], [10, 10]], + "StartingCardsInHand" : [[13, 13], [14, 15], [11, 13], [11, 10]], + "CardsDealtPerRound" : [13, 6, 6, 3], + "PlayableCards" : [[13, 14], [14, 16], [14, 13], [11, 10]], + "sorted_artists_per_round" : [{"e":"LiteMetal"}, {"e":"Krypto"}, {"e":"Yoko"}, {"e":"ChristinP"}, {"e":"KarlGitter"}, {"e":"Krypto"}, {"e":"LiteMetal"}, {"e":"Yoko"}, {"e":"ChristinP"}, {"e":"KarlGitter"}, {"e":"ChristinP"}, {"e":"LiteMetal"}, {"e":"Yoko"}, {"e":"KarlGitter"}, {"e":"Krypto"}, {"e":"Krypto"}, {"e":"LiteMetal"}, {"e":"ChristinP"}, {"e":"KarlGitter"}, {"e":"Yoko"}], + "Pn1" : {"set":[{"e":"Nemo"}, {"e":"Jana"}]}, + "Pn2" : {"set":[{"e":"Nemo"}, {"e":"Jana"}]}, + "Pn3" : {"set":[{"e":"Nemo"}, {"e":"Jana"}]}, + "Pn4" : {"set":[{"e":"Jana"}]}, + "award_bonus_per_round_per_artist" : [[4, 0, 0, 0, 6], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]], + "AwardGiven" : [true, true, true, true, true], + "AwardPlayedInRound" : [{"e":"Round1"}, {"e":"Round1"}, {"e":"Round1"}, {"e":"Round1"}, {"e":"Round1"}], + "AwardedArtist" : [{"e":"LiteMetal"}, {"e":"Krypto"}, {"e":"Krypto"}, {"e":"LiteMetal"}, {"e":"LiteMetal"}], + "ranking_score_per_artist_per_round" : [[2, 0, 0, 1, 3], [3, 0, 0, 1, 2], [0, 0, 3, 1, 2], [3, 0, 1, 0, 2]], + "IsArtistRanked" : [[true, false, false, true, true], [true, false, false, true, true], [false, false, true, true, true], [true, false, true, false, true]], + "RoundScore" : [[37, 21], [82, 15], [58, 18], [124, 12]], + "ArtistScore" : [[6, 0, 0, 1, 9], [9, 0, 0, 2, 11], [0, 0, 3, 3, 13], [12, 0, 4, 0, 15]], + "DrawOneCard" : [[[false, false, false, false, false], [true, false, false, false, false]], [[false, false, false, false, false], [false, true, false, false, false]], [[false, false, true, true, true], [false, false, false, false, false]], [[false, false, false, false, false], [false, false, false, false, false]]] +} \ No newline at end of file diff --git a/games/04.md b/games/04.md new file mode 100644 index 0000000..5724d5d --- /dev/null +++ b/games/04.md @@ -0,0 +1,161 @@ + +### Round (1) +Player 1 : BAAAA + +Player 2 : EEDCA + +Count(E=Krypto) = 2 (SECOND=2) + +Count(D=KarlGitter) = 1 + +Count(C=ChristinP) = 1 + +Count(B=Yoko) = 1 (THIRD=1) + +Count(A=LiteMetal) = 5 (FIRST=3) + +Awards: E>LiteMetal, D>Krypto, C>Krypto, B>LiteMetal, A>LiteMetal + +**Artist Scores**: + +Krypto:6 + +KarlGitter:0 + +ChristinP:0 + +Yoko:1 + +LiteMetal:9 + + +**Player Scores** + +Player 1 : 37 + +Player 2 : 21 + + +### Round (2) +Player 1 : EEEEBAAAA + +Player 2 : EDCCCCBBB + +Count(E=Krypto) = 5 (FIRST=3) + +Count(D=KarlGitter) = 1 + +Count(C=ChristinP) = 4 + +Count(B=Yoko) = 4 (THIRD=1) + +Count(A=LiteMetal) = 4 (SECOND=2) + + +**Artist Scores**: + +Krypto:9 + +KarlGitter:0 + +ChristinP:0 + +Yoko:2 + +LiteMetal:11 + + +**Player Scores** + +Player 1 : 82 + +Player 2 : 15 + + +### Round (3) +Player 1 : CBAAAA + +Player 2 : CCCCBB + +Count(C=ChristinP) = 5 (FIRST=3) + +Count(B=Yoko) = 3 (THIRD=1) + +Count(A=LiteMetal) = 4 (SECOND=2) + + +**Artist Scores**: + +Krypto:0 + +KarlGitter:0 + +ChristinP:3 + +Yoko:3 + +LiteMetal:13 + + +**Player Scores** + +Player 1 : 58 + +Player 2 : 18 + + +### Round (4) +Player 1 : EEEEECAAAA + +Player 2 : DDDDCCCBBB + +Count(E=Krypto) = 5 (FIRST=3) + +Count(D=KarlGitter) = 4 + +Count(C=ChristinP) = 4 (THIRD=1) + +Count(B=Yoko) = 3 + +Count(A=LiteMetal) = 4 (SECOND=2) + + +**Artist Scores**: + +Krypto:12 + +KarlGitter:0 + +ChristinP:4 + +Yoko:0 + +LiteMetal:15 + + +**Player Scores** + +Player 1 : 124 + +Player 2 : 12 + + + +## Final Scores + +Player 1 : 301 + +Player 2 : 66 + + +### Info + +A=LiteMetal (17) +B=Yoko (18) +C=ChristinP (19) +D=KarlGitter (20) +E=Krypto (21) + +Since this is a 2-player game, the maximum number of visible cards for any artist is 5Scores for unranked artists are 0 for that round. + +The syntax for awards is AwardTokenArtist > Awarded Artist (ie, the Award card for `AwardTokenArtist` was played, and the award was given to the `Awarded Artist`).