読者です 読者をやめる 読者になる 読者になる

ai65536's blog

将棋とかプログラムとか

ShogiGUIで詰めろ判定はありまぁす

ShogiGUIのver 0.0.3.15以降で詰めろ判定できます。

 

ShogiGUIでの詰めろ判定は最初は通常探索でNull Move Pruningをしているのなら、「そこで詰めろ判定できんじゃね?それなら検討モードもそんなにいじらなくていいし」と思っていましたが、いろいろあって断念しました。

そもそも通常探索の評価値のみでよくね?と思っていた(る)ので、ごとく放置・・・

 

次善の策として、「じゃあ手動でやろう」というわけで、パス(Null Move)を指し手として入力して、詰み探索できるようにしました。

 

操作の仕方としては、

・メニューー>編集ー>パスで1手パスを入力

・その後詰み探索 これで詰みなら詰めろ

 

f:id:ai65536:20150420223614p:plain

 

 

ただ、それだけだと面倒くさいという人向けに、アシスタントという機能を入れました。アシスタントというかアナライザーなんだけど、棋譜解析と名称が被りそうだったのでアシスタントにしました。

f:id:ai65536:20150420224129p:plain

メニューー>表示ー>アシスタン 

 

アシスタント機能は、入力、対局、検討の各モードで動作し、通常探索と、詰み探索ができます。

f:id:ai65536:20150420224431p:plain

詰みにチェックを入れ開始ボタンを押すと、現在の局面を詰み探索後、詰みが無ければ1手パスして詰み探索(詰めろ探索)をします。

自動にチェックが入っていれば、局面が変わったときに自動的に詰み探索を実行します。

このパスという指し手を導入することによって、継ぎ盤や棋譜へ分岐の追加など他の機能とそご無く詰めろ機能を実装できました。

 

f:id:ai65536:20150420232158p:plain

▲2四角からの詰めろ! 

 

が、しかし、問題点がいくつかあります。

(1)棋譜出力はどうするの?

(2)gpsfishなどの将棋エンジンの対応は?

 

(1)については、棋譜にはパスという指し手が出力されます。パスという指し手はKifu for windows等では読み込めませんので、その棋譜はShogiGUIでしか読み込めなくなります。

(2)については検討モードや詰み探索では、現在は指し手をエンジン側に渡していないので問題ありません。

問題になるのはパス降を継続対局する場合ですが、positionコマンドの指し手には"pass"という文字列を送ります。これはgpsfishが"pass"という指し手を受け付けるようになっていたので、それに便乗しました。

uci(チェス)の方は"0000"という指し手をパスと見なしているようですが、gpsfishは"0000"には未対応なので"pass"の方を採用しました。

 

現在パスに対応しているものは、gpsfishと、apery - コンピュータ将棋

ここで配布しているapery 20150327盤だけです。たぶん。

ただこれもパス以降を継続対局するなどという、奇特 な人はあまりいないでしょうから、特に問題ないでしょう。