人は駒得のみに生くるにあらず その18
ひよこ将棋v.0.10が玉を逃げ間違えて5手詰めのほうに逃げてしまう将棋がありまして、iteration8回は回っているのに5手詰めが見えないはずもなく、おかしいなーと思っていたのですが、今日原因がわかりました。
これです。
tree->pv[ply],ply = ply;
みなさん、わかりますか? "."(ドット)でなく","(カンマ)になっているんですね。
これについてVisual C++2010はコンパイル時に警告すら出しません。
私は目がすこぶる悪いのでこんなウォーリーを探せ!みたいなデバッグは苦手です。
デバッガーで追いかけるまでまったく気づきもしませんでした。
このバグのせいでひよこ将棋v0.10はPVが更新されないことがあります。そんな状態で勝ててるのが不思議ですが、ちょっとぐらいバグっていても大幅に弱くなるわけではないのがコンピューター将棋ってことですね。