解説記事を出すぜ、の件

とりあえず作ってみたので、配布されたスペック表*1にこっそり書いて運営の方に提出したところ、基本的に今日は拾わないらしかったので、ここでちょっとだけアピールしてみる*2

システムの概要は以下のとおりです。

入出力は以下のとおり。

入力:csa形式の棋譜ファイル
出力:して読み筋と評価値を記載したcsvファイルと解説記事のcsvファイル。

棋譜を評価値の動きによって以下の5パターンに分類する。

一方的:評価値が、勝った手番側で常に推移しており、最大評価値が300より大きい
中逆転:評価値が、負けた手番側に300-1000点内で推移した後、勝利する
大逆転:評価値が、負けた手番側に1000点以上に推移した後、勝利する
良い勝負:評価値が60手まで-300-+300で推移する
その他:上記のパターン以外

そのパターンごとに対局のポイントとなった「ポイント手」を定義し、そのときの手と読み筋を抽出する。その手が勝った手番が指した手であれば「好手」、負けた手番であれば「悪手」であるとする。

一方的:勝った手番側に最も評価値が大きく変化したときの手とする
中逆転:負けた手番の最大評価値になった後、初めて負けた手番の最大評価値のx%の値まで戻したときの手とする
大逆転:負けた手番の最大評価値になった後、初めて負けた手番の最大評価値のx%の値まで戻したときの手とする
良い勝負:勝った手番の最大評価値のx%の値になったときの手とする

上記で取得した情報(その他総手数など)を構造体にパックし、記事を生成する関数に渡す。
テンプレを用意しておいて、そのテンプレに構造体の情報を代入し、htmlファイルとして出力する。


ということで、評価値が正しく出ない弱いプログラムだと上手くいかないのです。
だからなんか変な結果が多かったです。
しかも、詰まされてから自滅手さすバグのおかげで、対局後にまともに棋譜を出せなかったです。
だからあまり記事出力を紹介するタイミングなかったです。
やらかしたなー、せっかく独創賞あったのにチャンス逃した気がする。

あと、ポイント手の出力条件はもう少し考えないとだめだなー。
出せた記事今見てるけど、評価値の大小だけだと上手くいかないということが判明したので。

*1:参加者に渡される使ってる技術を追記する紙

*2:アピールしなかった自分が悪いのです