コンピュータ将棋製作記 その5(2015年1月26日)
進捗どうですか?
前回の課題
- Pythonで書きなおす
- 速度は一旦犠牲にしても、Square Centricの情報を評価しやすい設計にする
- USIに対応させ、XBoardなりのインターフェースで表示出来るようにする
今日進んだ所
- node.jsで書きなおした
- Square Centricで全手抽出が問題なく動くところまで行けた
node.js
前回Pythonで書く、と言っていたのにnode.jsを選んだのは理由がある。
- node.jsの方が慣れていた
- 将来「なぜこのような手を選択したのか」を確認する時に、グラフィカルにログを追っていける方が望ましいのは言うまでもない。その時にnode.jsだとブラウザの上で動作させて全ての情報をオンメモリに置き、それを元にDOMを用いて情報を表示することが出来る
以上の理由によりnode.jsにした。移植ではなく、ほぼ全面書き直しだが、以前のC実装のテストが全部動く程度には書き直すことが出来た。
Square Centric
よりスクエアの情報を効果的に持つように設計をしなおした。とはいえ現時点で持っているのは、その場所の情報、その場所に利いている駒の情報、その場所に移動できる駒の情報、だけである。
これに色々な情報を追加し、スクエアの価値によって思考ルーチンを書いてみたい。たとえば相手の王の近い所に自分の利きがあれば高得点、みたいな感じで。
雑感
- 早速1回書き直したが、この手の複雑なプログラムは正直あまり書き直したくない
- 利きを目で見える形で出力したらなかなかおもしろかった
次回予定
TODO
- 何らかの思考ルーチンを作ってみる(まずは先読みしないタイプで)
短期目標
- USIに対応させ、XBoardなりのインターフェースで表示出来るようにする
- 金曜夜(30日夜)までに、minimaxなりα-βなりで何らかの思考ルーチンを組む