goo blog サービス終了のお知らせ 

パーソナルブログメモリ

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

バックギャモン、デバッグの日

2022-05-12 | 2日でPython3

バックギャモンのAIのバグがどうしても取れないので、ボードのデータ構成から

作り直す。少し理解しやすい形にしてロジック部は、ほぼ作り直し。それでもエラー

が発生。仕方がないので移動のルーチンのテスト関数を作る。それでもエラーが

発生。想定しない手をさそうとしてエラーで負ける。指し手のロジックを全部表示

してもたまに有りもしない手を指す。

 

最終的に指し手の検算をして、させない手をささせなくする。バグは出ても通しま

せんというあんまり作ったことのないルーチンで回避してしまった。その少し後に

バグは突如駆逐される。

 

行数でいうと下の23行目、ソースを画像に収めるべく縮めるために使ってしまっ

た手の初期化 te=[] を関数に入れてしまったこと。これがなんかのタイミングで

初期化されない。言語のバグなのかもしれない。(呼び出し側でteに値を設定

する箇所はない)

 

te=[]を普通に関数の一行目に移したら想像しない指し手エラーはおこらなくな

りました。

それでも3位のまま、そこでバックギャモンの戦術のサイトを読んで盤面の評価関

数をピップカウントと当てられそうなコマのピップカウントを逆にして0.5をかける

だけにしてみると1位2位にも少し勝てるようになる。

 

強化も全てが間違ったロジックに対するデバッグ作業のような気がしていました。


最新の画像もっと見る

コメントを投稿

サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。
ブログ作成者から承認されるまでコメントは反映されません。