geek な日々: 9月 2017

メニュー

級位者の愉快な対局 次の一手 △横歩取り3三歩戦法

もう級位者でもなくなったのだが、当時のテイスト溢れる対局を経験したので報告する。
横歩取りで▲3四飛とした後、後手も△7六飛としてしまうと、▲2二角成の強襲があって、△同銀でも△同金でも金銀の連結が外れ、飛車が成りこんでゲームセット、という「だから後手も先手の真似して横歩を取ってはいけませんよ!」的な進行がよく紹介されているが、このときの飛車の成りこみを防ぐ驚愕の
面白戦法が以下の△3三歩。

正直、指されて驚いた(笑)。
さて、どう対応したらいいだろう?


次の一手的には▲3二馬が正解だが、▲3一馬や▲8四飛車、▲2一馬なども先手勝勢~優勢(elmo 2017 調べ)。
▲3二馬△3四歩と飛車を取れば、▲3一馬で先手金銀得。▲5三馬の狙いも残っている。
▲3二馬△同銀と馬を取れば、▲2四飛△2三歩打。▲2八飛とひいても金得の上に▲2二歩打の狙いが残る。
やはり、「横歩を取るのは先手の権利」なんだろうが、相手が高段者の場合、ここからでも勝ち切るのは大変なんだろうなあとは思う。

nkif ファイルと DB と局面検索

今日は、JSKifuForWP のコードをいじる。
コメント出力も可能になった。
JSKifuForWP は読み込むことのできるデータ形式は、nkif 形式のみである。nkif というのは、私が勝手に名付けた名称で、その出自が某放送局のためこの名前となっている (笑)。
今日の作業でそのデータ構造はほぼ理解した。

nkif は一局面を例えば

p=1b191716101617191b0014000000000012001d1d1d1d1d1d1d1d1d000000000000000000000000000000000000000e000000000000000e000e0e0e0e0e0e0e0003000000000005000c0a08070207080a0c26;
h1=;
h2=;

という形で表す。p は盤面の駒配置、h1 は先手の持ち駒、h2 は後手の持ち駒、である。
p はここでも調べていた。1一が 1b で香、2一が 19 で桂、‥‥というのはわかっていたのだが、これだと 81 * 2 = 162 文字で盤面の駒配置はすべて決定されるはずだが、実際には、164 文字ある。最後の 26 が余計だ。
今までこれがわからなかったのだが、わかってみればなんことはない、これは着手位置を表すマーカー画像の位置そのものだった。初手▲2六歩と飛車先を突いたので、こうなっている次第。余計な情報なので落としてもいいのかもしれない。

そこまでわかったので、テスト的にデータベースも作ってみた。とりあえず三局ほどデータを挿入。

この状態で

SELECT * FROM tbl_kifu where kifu like '%p=1b19171610161719‥(略)‥0a0c26;%'

を実行(SQL文はいつまでたっても慣れないっす)。
結果は、

と同一局面(初手▲2六歩)を正しく2件ひろってくる。
問題の処理時間は、

と約 30 ms 。
これだと100局程度でも、同一局面をひろってくるのに数秒かかりそう。
んー、ちょっと遅いかな。

感想としては

・それっぽいシステムは組めそう
・が、「こなれた」システムをつくるのはそれなりのノウハウが必要

と思った。

むー、私、データベースとか検索とか経験値少ないんだよねー。