258 points

This commit is contained in:
Nemo 2020-07-24 17:48:36 +05:30
parent 57b2cfb094
commit 8d46efaf2d
3 changed files with 231 additions and 1 deletions

View File

@ -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 (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/).
The current partial implementation (see below for missing rules) results in a highest possible score of 301 for a 2 player game (258 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

29
games/09.json Normal file
View File

@ -0,0 +1,29 @@
{
"visible_count_per_round_per_artist_per_player" : [[[2, 0, 2, 2, 0], [0, 6, 0, 0, 0], [2, 0, 1, 0, 2], [1, 0, 1, 0, 3]], [[2, 0, 1, 0, 1], [0, 4, 0, 0, 0], [0, 0, 0, 4, 0], [4, 0, 0, 0, 0]], [[1, 2, 0, 2, 1], [2, 3, 0, 1, 0], [1, 0, 3, 2, 0], [1, 0, 1, 1, 3]], [[2, 0, 0, 0, 4], [0, 5, 0, 1, 0], [3, 0, 1, 2, 0], [0, 0, 2, 3, 1]]],
"first_player" : [{"e":"Player1"}, {"e":"Player3"}, {"e":"Player2"}, {"e":"Player2"}],
"last_player" : [{"e":"Player2"}, {"e":"Player1"}, {"e":"Player1"}, {"e":"Player4"}],
"total_score_per_round_per_artist" : [[3, 11, 0, 0, 2], [6, 12, 0, 2, 2], [7, 14, 0, 5, 2], [7, 15, 0, 8, 4]],
"CardsForArtist" : [[5, 6, 4, 2, 5], [6, 4, 1, 4, 1], [5, 5, 4, 6, 4], [5, 5, 3, 6, 5]],
"NominalTurnCount" : [6, 4, 6, 6],
"Score" : [79, 258, 51, 73],
"MaxVisibleCards" : 6,
"TotalCardsPlayed" : [[6, 6, 5, 5], [4, 4, 4, 4], [6, 6, 6, 6], [6, 6, 6, 6]],
"StartingCardsInHand" : [[13, 13, 13, 13], [11, 11, 12, 12], [13, 11, 12, 13], [8, 6, 6, 7]],
"CardsDealtPerRound" : [13, 4, 4, 0],
"PlayableCards" : [[13, 13, 13, 13], [13, 11, 12, 13], [14, 12, 12, 13], [8, 6, 6, 7]],
"sorted_artists_per_round" : [{"e":"KarlGitter"}, {"e":"LiteMetal"}, {"e":"Krypto"}, {"e":"ChristinP"}, {"e":"Yoko"}, {"e":"Krypto"}, {"e":"Yoko"}, {"e":"KarlGitter"}, {"e":"LiteMetal"}, {"e":"ChristinP"}, {"e":"Yoko"}, {"e":"KarlGitter"}, {"e":"Krypto"}, {"e":"LiteMetal"}, {"e":"ChristinP"}, {"e":"Yoko"}, {"e":"LiteMetal"}, {"e":"KarlGitter"}, {"e":"Krypto"}, {"e":"ChristinP"}],
"Pn1" : {"set":[{"e":"Player1"}, {"e":"Player2"}]},
"Pn2" : {"set":[{"e":"Player1"}, {"e":"Player2"}, {"e":"Player3"}, {"e":"Player4"}]},
"Pn3" : {"set":[{"e":"Player1"}, {"e":"Player2"}, {"e":"Player3"}, {"e":"Player4"}]},
"Pn4" : {"set":[{"e":"Player2"}, {"e":"Player3"}, {"e":"Player4"}]},
"award_bonus_per_round_per_artist" : [[2, 8, 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":"Krypto"}, {"e":"KarlGitter"}, {"e":"KarlGitter"}, {"e":"KarlGitter"}, {"e":"KarlGitter"}],
"ranking_score_per_artist_per_round" : [[1, 3, 0, 0, 2], [3, 1, 0, 2, 0], [1, 2, 0, 3, 0], [0, 1, 0, 3, 2]],
"IsArtistRanked" : [[true, true, false, false, true], [true, true, false, true, false], [true, true, false, true, false], [false, true, false, true, true]],
"RoundScore" : [[6, 66, 10, 9], [12, 48, 8, 24], [45, 61, 17, 12], [16, 83, 16, 28]],
"ArtistScore" : [[3, 11, 0, 0, 2], [6, 12, 0, 2, 0], [7, 14, 0, 5, 0], [0, 15, 0, 8, 4]],
"DrawOneCard" : [[[false, false, false, false, false], [false, false, false, false, false], [false, false, false, false, false], [false, false, false, false, false]], [[false, false, true, false, true], [false, false, false, false, false], [false, false, false, false, false], [true, false, false, false, false]], [[false, false, false, true, false], [false, 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]]]
}

201
games/09.md Normal file
View File

@ -0,0 +1,201 @@
### Round (1)
Player 1 : EECCBB
Player 2 : DDDDDD
Player 3 : EECAA
Player 4 : ECAAA
Count(E=Krypto) = 5 (THIRD=1)
Count(D=KarlGitter) = 6 (FIRST=3)
Count(C=ChristinP) = 4
Count(B=Yoko) = 2
Count(A=LiteMetal) = 5 (SECOND=2)
Awards: E>Krypto, D>KarlGitter, C>KarlGitter, B>KarlGitter, A>KarlGitter
**Artist Scores**:
Krypto:3
KarlGitter:11
ChristinP:0
Yoko:0
LiteMetal:2
**Player Scores**
Player 1 : 6
Player 2 : 66
Player 3 : 10
Player 4 : 9
### Round (2)
Player 1 : EECA
Player 2 : DDDD
Player 3 : BBBB
Player 4 : EEEE
Count(E=Krypto) = 6 (FIRST=3)
Count(D=KarlGitter) = 4 (THIRD=1)
Count(C=ChristinP) = 1
Count(B=Yoko) = 4 (SECOND=2)
Count(A=LiteMetal) = 1
**Artist Scores**:
Krypto:6
KarlGitter:12
ChristinP:0
Yoko:2
LiteMetal:0
**Player Scores**
Player 1 : 12
Player 2 : 48
Player 3 : 8
Player 4 : 24
### Round (3)
Player 1 : EDDBBA
Player 2 : EEDDDB
Player 3 : ECCCBB
Player 4 : ECBAAA
Count(E=Krypto) = 5 (THIRD=1)
Count(D=KarlGitter) = 5 (SECOND=2)
Count(C=ChristinP) = 4
Count(B=Yoko) = 6 (FIRST=3)
Count(A=LiteMetal) = 4
**Artist Scores**:
Krypto:7
KarlGitter:14
ChristinP:0
Yoko:5
LiteMetal:0
**Player Scores**
Player 1 : 45
Player 2 : 61
Player 3 : 17
Player 4 : 12
### Round (4)
Player 1 : EEAAAA
Player 2 : DDDDDB
Player 3 : EEECBB
Player 4 : CCBBBA
Count(E=Krypto) = 5
Count(D=KarlGitter) = 5 (THIRD=1)
Count(C=ChristinP) = 3
Count(B=Yoko) = 6 (FIRST=3)
Count(A=LiteMetal) = 5 (SECOND=2)
**Artist Scores**:
Krypto:0
KarlGitter:15
ChristinP:0
Yoko:8
LiteMetal:4
**Player Scores**
Player 1 : 16
Player 2 : 83
Player 3 : 16
Player 4 : 28
## Final Scores
Player 1 : 79
Player 2 : 258
Player 3 : 51
Player 4 : 73
### 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`).