パーソナルブログメモリ

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

Python ナイトムーブスはボードゲームAIの基礎なのだろう 少し縮めて18行

2023-10-07 | Windows11のミニPC

発端とか

CodinGameにまた新しいbot programmingがcontributeされていたので、

CodinGameで世界一bot programmingに挑戦している私としては挑戦せずにはいられまい

ナイトムーブスだけで10本ぐらいはプログラム作っている気がします

昨日からamazon primeでヴィンランド・サガ2を全話みているので

なんが業のようなものを感じています

 

ゲームの概要

さてお題はナイトムーブス

お互いナイトムーブを交互に繰り返します

一度いた場所にはお互い2度と入れません

先に動けなくなったほうが負けです

 

土台作成

まずはAIの土台となるデータ設計と必要関数の作成

今回ナイトの飛び出しを防止するために上下にも2重の馬防柵を作って

条件分岐を減らしてみたのが工夫です

 

土台用作成関数

2 まずはエラー表示(これをログ表示に使います)

3 位置をサーバーに伝えるときにa1形式に変換

4 ボードの表示(ボードの生成ミスとかのバグにはまったときに役立ちます)

5 ボードと位置からナイトムーブスのできる座標をリストで作成

 

AI作成

自分の動かせる場所に動かして、そこから自分の動ける場所、相手の動ける場所を評価としてみました

相手の動ける場所がなければ勝ちなのでその場合は優先的にその手を指します

 

追加作成関数

6-8 駒の移動した盤面を作成

 

おまけ

無駄とか不要になったロジックを修正

 

ということで世界最初のたたき台をsubmit


最新の画像もっと見る

コメントを投稿

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