diff --git a/README.md b/README.md index 2d8040e..aec5c3c 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 301 for a 2 player game (182 for 4 players). See [games/04.md](games/04.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 (238 for 4 players). 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/07.json b/games/07.json new file mode 100644 index 0000000..a053e99 --- /dev/null +++ b/games/07.json @@ -0,0 +1,28 @@ +{ + "visible_count_per_round_per_artist_per_player" : [[[2, 0, 1, 1, 2], [0, 5, 0, 0, 1], [3, 0, 1, 2, 0], [0, 0, 2, 1, 3]], [[1, 1, 1, 1, 1], [1, 2, 0, 0, 2], [2, 0, 1, 1, 1], [1, 1, 0, 1, 2]], [[1, 0, 2, 2, 0], [0, 4, 1, 0, 0], [2, 0, 2, 0, 0], [2, 0, 1, 0, 1]], [[5, 0, 0, 0, 0], [0, 5, 0, 0, 0], [1, 0, 1, 2, 0], [0, 0, 0, 3, 1]]], + "first_player" : [{"e":"Player1"}, {"e":"Player1"}, {"e":"Player1"}, {"e":"Player3"}], + "last_player" : [{"e":"Player4"}, {"e":"Player4"}, {"e":"Player2"}, {"e":"Player1"}], + "total_score_per_round_per_artist" : [[1, 12, 0, 0, 3], [3, 13, 0, 0, 6], [5, 14, 3, 0, 6], [8, 15, 3, 2, 6]], + "CardsForArtist" : [[5, 5, 4, 4, 6], [5, 4, 2, 3, 6], [5, 4, 6, 2, 1], [6, 5, 1, 5, 1]], + "NominalTurnCount" : [6, 5, 5, 5], + "Score" : [81, 238, 43, 56], + "MaxVisibleCards" : 6, + "TotalCardsPlayed" : [[6, 6, 6, 6], [5, 5, 5, 5], [5, 5, 4, 4], [5, 5, 4, 4]], + "StartingCardsInHand" : [[13, 13, 13, 13], [11, 11, 11, 11], [11, 10, 14, 10], [6, 5, 10, 6]], + "CardsDealtPerRound" : [13, 4, 4, 0], + "PlayableCards" : [[13, 13, 13, 13], [12, 11, 15, 11], [11, 10, 14, 10], [6, 5, 10, 6]], + "sorted_artists_per_round" : [{"e":"LiteMetal"}, {"e":"KarlGitter"}, {"e":"Krypto"}, {"e":"Yoko"}, {"e":"ChristinP"}, {"e":"LiteMetal"}, {"e":"Krypto"}, {"e":"KarlGitter"}, {"e":"Yoko"}, {"e":"ChristinP"}, {"e":"ChristinP"}, {"e":"Krypto"}, {"e":"KarlGitter"}, {"e":"Yoko"}, {"e":"LiteMetal"}, {"e":"Krypto"}, {"e":"Yoko"}, {"e":"KarlGitter"}, {"e":"LiteMetal"}, {"e":"ChristinP"}], + "Pn1" : {"set":[{"e":"Player1"}, {"e":"Player2"}, {"e":"Player3"}, {"e":"Player4"}]}, + "Pn2" : {"set":[{"e":"Player1"}, {"e":"Player2"}, {"e":"Player3"}, {"e":"Player4"}]}, + "Pn3" : {"set":[{"e":"Player1"}, {"e":"Player2"}]}, + "Pn4" : {"set":[{"e":"Player1"}, {"e":"Player2"}, {"e":"Player3"}, {"e":"Player4"}]}, + "award_bonus_per_round_per_artist" : [[0, 10, 0, 0, 0], [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":"KarlGitter"}, {"e":"KarlGitter"}, {"e":"KarlGitter"}, {"e":"KarlGitter"}, {"e":"KarlGitter"}], + "ranking_score_per_artist_per_round" : [[1, 2, 0, 0, 3], [2, 1, 0, 0, 3], [2, 1, 3, 0, 0], [3, 1, 0, 2, 0]], + "IsArtistRanked" : [[true, true, false, false, true], [true, true, false, false, true], [true, true, true, false, false], [true, true, false, true, false]], + "RoundScore" : [[8, 63, 3, 9], [22, 41, 12, 28], [11, 59, 16, 13], [40, 75, 12, 6]], + "ArtistScore" : [[1, 12, 0, 0, 3], [3, 13, 0, 0, 6], [5, 14, 3, 0, 0], [8, 15, 0, 2, 0]], + "DrawOneCard" : [[[false, false, false, false, false], [false, false, false, false, false], [false, false, false, false, false], [false, false, false, false, false]], [[false, true, false, false, false], [false, false, false, false, false], [true, false, true, true, true], [false, false, false, false, false]], [[false, false, false, false, false], [false, false, false, false, false], [false, false, false, false, false], [false, false, false, false, false]], [[false, false, false, false, false], [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/07.md b/games/07.md new file mode 100644 index 0000000..f6fd9a7 --- /dev/null +++ b/games/07.md @@ -0,0 +1,201 @@ + +### Round (1) +Player 1 : EECBAA + +Player 2 : DDDDDA + +Player 3 : EEECBB + +Player 4 : CCBAAA + +Count(E=Krypto) = 5 (THIRD=1) + +Count(D=KarlGitter) = 5 (SECOND=2) + +Count(C=ChristinP) = 4 + +Count(B=Yoko) = 4 + +Count(A=LiteMetal) = 6 (FIRST=3) + +Awards: E>KarlGitter, D>KarlGitter, C>KarlGitter, B>KarlGitter, A>KarlGitter + +**Artist Scores**: + +Krypto:1 + +KarlGitter:12 + +ChristinP:0 + +Yoko:0 + +LiteMetal:3 + + +**Player Scores** + +Player 1 : 8 + +Player 2 : 63 + +Player 3 : 3 + +Player 4 : 9 + + +### Round (2) +Player 1 : EDCBA + +Player 2 : EDDAA + +Player 3 : EECBA + +Player 4 : EDBAA + +Count(E=Krypto) = 5 (SECOND=2) + +Count(D=KarlGitter) = 4 (THIRD=1) + +Count(C=ChristinP) = 2 + +Count(B=Yoko) = 3 + +Count(A=LiteMetal) = 6 (FIRST=3) + + +**Artist Scores**: + +Krypto:3 + +KarlGitter:13 + +ChristinP:0 + +Yoko:0 + +LiteMetal:6 + + +**Player Scores** + +Player 1 : 22 + +Player 2 : 41 + +Player 3 : 12 + +Player 4 : 28 + + +### Round (3) +Player 1 : ECCBB + +Player 2 : DDDDC + +Player 3 : EECC + +Player 4 : EECA + +Count(E=Krypto) = 5 (SECOND=2) + +Count(D=KarlGitter) = 4 (THIRD=1) + +Count(C=ChristinP) = 6 (FIRST=3) + +Count(B=Yoko) = 2 + +Count(A=LiteMetal) = 1 + + +**Artist Scores**: + +Krypto:5 + +KarlGitter:14 + +ChristinP:3 + +Yoko:0 + +LiteMetal:0 + + +**Player Scores** + +Player 1 : 11 + +Player 2 : 59 + +Player 3 : 16 + +Player 4 : 13 + + +### Round (4) +Player 1 : EEEEE + +Player 2 : DDDDD + +Player 3 : ECBB + +Player 4 : BBBA + +Count(E=Krypto) = 6 (FIRST=3) + +Count(D=KarlGitter) = 5 (THIRD=1) + +Count(C=ChristinP) = 1 + +Count(B=Yoko) = 5 (SECOND=2) + +Count(A=LiteMetal) = 1 + + +**Artist Scores**: + +Krypto:8 + +KarlGitter:15 + +ChristinP:0 + +Yoko:2 + +LiteMetal:0 + + +**Player Scores** + +Player 1 : 40 + +Player 2 : 75 + +Player 3 : 12 + +Player 4 : 6 + + + +## Final Scores + +Player 1 : 81 + +Player 2 : 238 + +Player 3 : 43 + +Player 4 : 56 + + +### Info + +A=LiteMetal (17) +B=Yoko (18) +C=ChristinP (19) +D=KarlGitter (20) +E=Krypto (21) + +Since this is a 4-player game, the maximum number of visible cards for any artist is 6Scores 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`).