パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

ポーカーのようなダイスゲームのAIの作成

2023-10-06 | 新規1000万人ぐらいにプログラムをマスターしてもらいたい

簡単なルール

ターン

ダイスを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

 


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。