ドミニオンのプレイにおいて、しばしば「よく混ぜるため」と称してディールシャッフルを使うプレイヤーがいる。

  • つまり状況に応じてシャッフルの種類を変えることが許されている また、場に出したカードと、出さなかった手札のどちらが捨て札に先に入るのか、にも規定があるという話を聞いたことがない

ならばこれをゲーム上の意思決定に含めた上で最適化を掛ければ、その意思決定を行わないプレイヤーより高いパフォーマンスが発揮されるはず、という実験

ビッグマネー戦略(アクションを買わずにコインばかり買う戦略)を使うと属州4枚購入するまで平均17ターンだ、という考察があるので、これをシャッフルコントロールをしない場合のベースラインとする シャッフルコントロールをした場合、12ターンで属州4枚を買うことができる。

  • 買いシーケンス: 銀銀金銀金金銀金属属属属
  • 3山と4山の全パターンのディールシャッフルについて探索したが「最初にディールした山を最初に拾うこと」さえ満たせばどの方法でも可能
    • 当初、状況によってシャッフル方法を変更することでデッキの順番をコントロールするつもりだったが、より厳しい「状況によらずシャッフル方法は固定」であってもベースラインに勝てることがわかった

その他考察メモ

  • ターン1と2で買ったものはルール上6枚離れるので、3山ディールシャッフルなら重ねることができる
    • 逆に両方アクションカードなどの場合には4山ディールで分けることができる

倫理観がどうとかいう議論を避けるために、トランプを使ったカードマジックの亜種のドミニオンカードを使ったマジックとしてデモ動画にした


初期配置:屋屋屋銅銅銅銅銅銅銅 シャッフルは4山シャッフル T1: draw 銅銅屋銅銅, play 銅銅銅, buy 銀, put 屋銅 銅銅銅 T2: draw 屋銅屋銅銅, 銀が変えるけど買わずに put 屋屋銅銅銅 T3: draw 銅銅銀銅銅, play 銅銅銅銀銅, buy 金, put 銅銅銅銀銅 T4: draw 屋銅屋銅屋, 何もプレイしないで0金, buy 銅, put 屋銅銅屋屋 T5: draw 銅銅銀金銅, 属州が買える


25ターンでアクションカードを買わずに属州8枚

序盤で何も購入していないが、本当にこれでいいのか? 屋屋屋銅銅銅銅銅銅銅 (3, (1, 0, 2)) 銅銅屋銅銅, play 銅, buy , put 銅銅銅屋屋 銅銅銅屋銅, play 銅銅銅, buy 銀, put 銅銅銅屋銅 屋銅屋銅銅, play 銅銅銅, buy , put 銅銅屋屋銅 銅銅銀金銀, play 銀金銀銅, buy 属, put 銀金銀銅銅 銀銅銀屋銅, play 銅銀銅銀, buy 金, put 屋銅銀銅銀 銀銅銅金銅, play 銅銅金銀銅, buy 属, put 銅銅金銀銅 銅銅屋銅銀, play 銀銅, buy 銀, put 銀銅銅銅屋 屋銅銀金銀, play 金銅銀, buy 金, put 銀屋金銅銀 属屋銅銀銅, play , buy , put 屋屋銅銅銅 銅銀金銀銅, play 銀銅金銀, buy 属, put 銀銅金銀銅 銅屋銅屋銀, play , buy , put 属属属銅属 金屋銅銀銀, play 銅銀金銀, buy 属, put 銅銀金銀屋 屋金銅銀銀, play 金銀銀銅, buy 属, put 金銀銀銅屋

T3で金貨を買うように強制したら22ターンのパターンが見つかった

屋屋屋銅銅銅銅銅銅銅 (3, (0, 1, 2)) 銅銅銅屋銅, play 銅銅銅銅, buy 銀, put 銅銅銅銅屋 銅屋銅銅屋, play 銅銅銅, buy 銀, put 銅銅銅屋屋 銅銀銅銀屋, play 銀銀銅銅, buy 金, put 銀銀銅銅屋 銅銅銅屋銅, play 銅銅銅, buy 銀, put 銅銅銅銅屋 屋銅銅銀銅, play 銀銅銅銅, buy 銀, put 銀銅銅銅屋 金銅銅銅銀, play 銀銅金銅銅, buy 属, put 銀銅金銅銅 屋銅屋銀金, play 銀金銅, buy 金, put 屋屋銀金銅 属銅銀銅銀, play 銀銅銀銅, buy 金, put 属銀銅銀銅 銅銀銅銅屋, play 銅銅銀, buy 銀, put 銅銅銀銅屋 銅銀銀銅金, play 銀金銀銅, buy 属, put 銀金銀銅銅 銀金銅銅銀, play 銅金銀銅銀, buy 属, put 銅金銀銅銀 属金屋屋銅, play 金, buy 銀, put 屋屋属銅金 銅銀銅屋属, play , buy , put 銀銀属属銀 銅屋銅銅銅, play , buy , put 銀銅属金銅 銀銀銅属金, play 金銀銅銀, buy 属, put 金銀銅銀属 屋銅銅属屋, play , buy 銅, put 屋銅属屋銅 銀金銀屋銅, play 銀銀銅金, buy 属, put 銀銀銅金屋 属銀銅金銀, play 銀銅金銀, buy 属, put 銀銅金銀属 屋屋銀金金, play 銀金金, buy 属, put 銀金金屋屋

23T 銅銅銅銅銅銅銅屋屋屋 (3, (0, 2, 1)) 屋銅銅銅屋, play 銅銅銅, buy 銀, put 銅銅銅屋屋 銅銅屋銅銅, play 銅銅銅, buy 銀, put 屋銅銅銅銅 銅銀銅銀銅, play 銀銀銅銅, buy 金, put 銅銀銀銅銅 銅屋銅銅屋, play 銅, buy , put 銅属銀銀屋 金金銅銅銅, play 金銅銅金, buy 属, put 金銅銅金銅 屋銅銅金金, play 銅金銅金, buy 属, put 屋銅金銅金 銀銅銅属銅, play 銀銅, buy 銀, put 銅属銅銀銅 属銀屋銀銅, play , buy , put 銅属銅金属 銀属屋銅銀, play 銀銅, buy 銀, put 属屋銀銀銅 銅銅屋銀属, play 銀, buy $, put 銀屋属銅銅 金銅銀属銀, play 銅銀銀金, buy 属, put 銅銀銀金属 属銀銀銅金, play 銅金銀銀, buy 属, put 銅金銀銀属

ビッグマネー戦略が属州4枚購入するまで平均17ターン、という考察が出回っているので条件を揃える 属州4枚購入まで13ターン T5以降は常に金貨が買える状況 銅銅銅銅銅銅銅屋屋屋 (4, (0, 1, 2, 3)) T1 屋銅銅屋銅(3), play 銅銅銅, buy 銀, put 屋屋銅銅銅 T2 銅銅銅屋銅(4), play 銅銅銅, buy 銀, put 屋銅銅銅銅 T3 銅銅銀銅銅(6), play 銅銅銀銅銅, buy 金, put 銅銅銀銅銅 T4 屋銅銀屋銅(4), play 銀銅, buy 銀, put 屋銅屋銀銅 T5 屋銅銅銅金(6), play 銅銅銅金, buy 金, put 屋銅銅銅金 T6 屋銅銅銀銀(6), play 銀銅銅銀, buy 金, put 屋銀銅銅銀 T7 銅銅屋銀銀(6), play 銅銀銀銅, buy 金, put 銅銀銀銅屋 T8 銅金銅金屋(8), play 金金, buy 金, put 金金銅屋銅 T9 銅金銅銀屋(7), play 金銀銅, buy 金, put 金銀銅屋銅 T10 銅屋金金銅(8), play 銅金銅金, buy 属, put 銅金銅金屋 T11 金銅金銅屋(8), play 金金銅銅, buy 属, put 金金銅銅屋 T12 銅銀屋金銀(8), play 銀銅銀金, buy 属, put 銀銅銀金屋 T13 銅銅金銀金(10), play 金金銀, buy 属, put 銅銅金金銀

T7で金貨を買うのを諦めることでT12で属州4枚 銅銅銅銅銅銅銅屋屋屋 (3, (0, 2, 1)) T1 屋銅銅銅屋(3), play 銅銅銅, buy 銀, put 銅銅銅屋屋 T2 銅銅屋銅銅(4), play 銅銅銅, buy 銀, put 屋銅銅銅銅 T3 銅銀銅銀銅(7), play 銅銀銀銅, buy 金, put 銅銀銀銅銅 T4 銅屋銅銅屋(3), play 銅銅銅, buy 銀, put 銅銅銅屋屋 T5 屋銅銅銀銀(6), play 銅銅銀銀, buy 金, put 屋銅銅銀銀 T6 金屋銅銅銀(7), play 銅銅銀金, buy 金, put 銅銅銀金屋 T7 屋銅銅銅銀(5), play 銀銅, buy 銀, put 屋銅銅銀銅 T8 金銅金屋銅(8), play 金金銅銅, buy 金, put 屋金金銅銅 T9 銀銅金銅銀(9), play 銅銀銀金, buy 属, put 銅銅銀銀金 T10 屋銀属金金(8), play 金銀金, buy 属, put 金銀金屋属 T11 銅銀金銅銅(8), play 銀金銅銅銅, buy 属, put 銀金銅銅銅 T12 金銅銅銀銅(8), play 銀金銅銅銅, buy 属, put 銀金銅銅銅

T8で属州買えるけど金貨を買ってる。属州買ったらいけないのかな? →T11で属州買えなくて結局T12にずれ込むようだ

銀銀金銀金金銀金属属属属のパターンに限定する deal_patternは :

Counter({(3, (0, 1, 2)): 4142,
         (3, (0, 2, 1)): 9154,
         (4, (0, 3, 2, 1)): 2090,
         (4, (0, 2, 3, 1)): 1450,
         (4, (0, 1, 2, 3)): 636,
         (4, (0, 2, 1, 3)): 374})

というわけで、ディールシャッフルをして最初に配った山を拾うならどんなシャッフルでも実現できる 初期配置もどちらでも良い

Counter({‘屋屋屋銅銅銅銅銅銅銅’: 10362, ‘銅銅銅銅銅銅銅屋屋屋’: 7484})

初手もわりとどうでも良い :

In [349]: Counter(g.log[0] for g in gg3)
Out[349]: 
Counter({'銅銅銅屋銅(4), play 銅銅銅, buy 銀, put 屋銅銅銅銅': 2500,
         '銅銅銅屋銅(4), play 銅銅銅, buy 銀, put 銅屋銅銅銅': 464,
         '銅銅銅屋銅(4), play 銅銅銅, buy 銀, put 銅銅銅銅屋': 264,
         '銅銅銅屋銅(4), play 銅銅銅, buy 銀, put 銅銅銅屋銅': 460})

これはなぜかというと、T1, T2で銀貨を買う場合、ルール上銀貨は6枚離れるので 3山シャッフルなら確実に山0に重なるからだ。 逆にいうならアクションカードを2枚買うプレイの時には3山シャッフルを避けなければ確実にアクション被りが起きる。

put 屋銅銅銅銅のパターンを掘り下げる :

In [352]: Counter(g.log[1] for g in gg4)
Out[352]: Counter({'銅屋銅銅屋(3), play 銅銅銅, buy 銀, put 銅銅銅屋屋': 2500})

In [353]: Counter(g.log[2] for g in gg4)
Out[353]: 
Counter({'銅銀銅銀屋(6), play 銀銅銀銅, buy 金, put 銀銅銀銅屋': 994,
         '銅銀銅銀屋(6), play 銀銅銅銀, buy 金, put 銀銅銅銀屋': 1290,
         '銅銀銅銀屋(6), play 銅銀銅銀, buy 金, put 銅銀銅銀屋': 216})

In [354]: gg5 = [g for g in gg4 if "put 銀銅銅銀屋" in g.log[2]]

In [355]: len(gg5)
Out[355]: 1290

In [356]: Counter(g.log[3] for g in gg5)
Out[356]: Counter({'銅銅屋屋銅(3), play 銅銅銅, buy 銀, put 銅銅銅屋屋': 1290})

In [357]: Counter(g.log[4] for g in gg5)
Out[357]: Counter({'銅銅銅銀銅(6), play 銀銅銅銅銅, buy 金, put 銀銅銅銅銅': 1290})

In [358]: Counter(g.log[5] for g in gg5)
Out[358]: Counter({'金屋銅銀銀(8), play 銅金銀, buy 金, put 銅金銀屋銀': 1290})

In [359]: Counter(g.log[6] for g in gg5)
Out[359]: Counter({'屋銅屋銅銀(4), play 銀銅, buy 銀, put 銀銅屋銅屋': 1290})

In [360]: Counter(g.log[7] for g in gg5)
Out[360]: Counter({'金銅金屋銅(8), play 金金銅, buy 金, put 銅屋金金銅': 1290})

In [361]: Counter(g.log[8] for g in gg5)
Out[361]: 
Counter({'銅銀銀金銅(9), play 銀金銀銅, buy 属, put 銀金銀銅銅': 600,
         '銅銀銀金銅(9), play 銅銀銀金, buy 属, put 銅銅銀銀金': 460,
         '銅銀銀金銅(9), play 銀銅銀銅金, buy 属, put 銀銅銀銅金': 200,
         '銅銀銀金銅(9), play 銀金銅銅銀, buy 属, put 銀金銅銅銀': 30})

これはどれも2番目か5番目に金貨が来るように捨てている

ここから先は一気に分岐する 属州を買うだけで、属州を置く場所はルールで固定されていて、他のコインはだいたいどこでも良いのだろう