簡単なルール
ターン
ダイスを6個振る
ポーカーのように得点があってパスするか一部残して再度振るか決める
各ターン再々度まで振ることができる
再度振る場合得点が上げることができなければ0点になる上がればこれまでの得点にさらに加算
勝利条件
10000点先に取ったら勝ち
役
123456は1500点
1が3つで1000点 1つ増えるごとに追加1000点
2が3つで200点 1つ増えるごとに追加200点
3が3つで300点 1つ増えるごとに追加300点
4が3つで400点 1つ増えるごとに追加400点
5が3つで500点 1つ増えるごとに追加500点
6が3つで600点 1つ増えるごとに追加600点
1は100点 5は50点
ゲームの現在ある場所(今後移動とかしますたぶん)
https://www.codingame.com/contribute/view/73143f11debbac53f6b67ee76d7430d507dcd
AIの理想と現実
残すダイスを決めたとき、残りを全振りして期待値が上がれば選択します
というものを目指しましたが
とりあえずストレートはそのまま
同じ数字が3つまたは4つあればそのまま
同じ数字が2個あれば得点の高いものを残す
1,5は残す
何もなければ一番高い数値を1つ残すとなっています
ソースと微調整と余談
当初ストレート一個くずれは狙いにいく 29行目
同じ数値が3つあれば上を狙いにいっていたのですがスコアが伸びないのでやめてます 14行目
3から10行は重要なルーチンのはずだったのですが活用していませんでした
いまだにデフォルトAIにあまり勝てません 強い
残すダイスによって期待値を辞書に収めていけば高速化いけそう
辞書のキーは集合にして有無チェックも高速化
残すダイスの最適解はまだ不明
面白いと思っているんだけど挑戦者が増えない
現在 80億6000万分の1