最終更新: puriketu99 2011年10月29日(土) 05:28:36履歴
ドミニオンの圧縮戦略で、5枚以上のカードの情報(銀、金、属州礼拝堂)を与えると、その状態から属州を5枚買うまでの平均ターン数を返すプログラム。
適宜手動で実験してみてください。かなり理想化しているので、参考程度にどうぞ。
下記のプログラムによれば、結論としては、「属州を買えるときは常に属州を買おう。そうでないときは、マナブースト(この場合は金)を買おう」となりそう。
これは、圧縮戦略によらなそうな気もしているが、そこは自分でかんがえろ。
#chokudaiが解析的に解いた結果、G3枚買ってから、上記の戦略に移るのが正しいとのこと。
適宜手動で実験してみてください。かなり理想化しているので、参考程度にどうぞ。
下記のプログラムによれば、結論としては、「属州を買えるときは常に属州を買おう。そうでないときは、マナブースト(この場合は金)を買おう」となりそう。
これは、圧縮戦略によらなそうな気もしているが、そこは自分でかんがえろ。
#chokudaiが解析的に解いた結果、G3枚買ってから、上記の戦略に移るのが正しいとのこと。
#python import random moto = ['s','s','s','g','z']#sは銀貨、gは金貨、zは属州と礼拝堂 lib = moto[:] answer = 0.0 division = 0.0 turn = 0.0 while division < 3000: if lib.count('z') == 6: answer = answer + turn division = division + 1.0 lib = moto[:] turn = 0 list = random.sample(lib,5) point = 3 * list.count('g') + 2 * list.count('s') if point >= 8: lib.append('z') if point == 6 or point == 7: lib.append('g') turn = turn + 1 print answer / division
タグ
このページへのコメント
ふんばば作 Perl バージョン http://ideone.com/wB36W
金1枚:9.447
金2枚:9.233
金3枚:9.216