所要時間は3時間ほど。コードを書いては没書いては没という作業を繰り返して今に至ります。没コードを合わせると1週間くらいはゆうに費やしているような気がします。
ここ最近はCSAファイルから構文木、抽象構文木を構成するプログラムを書いています。その過程で気づいた仕様のあいまいさとかについてのメモ。勘違いもあるかも。なおCSAの仕様はVer.2.2を参照しています。
そろそろAIっぽいこともしてみようと思った次第。
一応、棋譜のメタ情報(プレイヤ名のみ)と棋譜本体部分を抽出することには成功しました。動いたことによって駒を取ったのか?王手か?みたいな部分は全くなのですが、一応棋譜学習を行う上での必要最低限にはかなり近づいたんじゃないかと思います。αを名乗…
前回の続き的なこと。もうちょい実装にしても設計にしてもいい形があるように思うので。
なんかデザインパターンぽいことをしつつインタプリタを書こうと思ったので。正直自分でもあまり理解できてない気がする。書いたコードのメリットもいまいち掴みきれてない。Stateパターン、あとメソッドチェーンのテクニックを(適切かどうかは置いといて)使…
テキストの範囲表示をしたい場合はcat, head, tail の組み合わせを使う必要があります(正確には後ろの2つでいけますけど)。そういう時とかにパッとコマンド1つで表示してやりたいなって思いました。まあ簡単なんですけど。
前回、前々回の実装を通して、将棋をするための基盤(Model)部分の設計についてそれなり考えられるようになってきました。前回前々回にやってたことはMVCにおけるModel部分ですが、今回は盤の部分や駒の操作(Moveみたいなこと)についてです。MVCのVも絡んだ、…
前回の続きもの。同一方向への利きについてはループで走査可能となるようなやり方にしました。
将棋関係のプログラミングで何か題材ないかなと思い、実装してみました。
だいぶうさんくさいけど実装してみた。欠陥コード。
最近は将棋ウォーズよりも81Dojoを使うことが多いです。なにより秒読みがあるのが嬉しいですよね。将棋ウォーズは持ち時間が短すぎて、どうしてもひらめきで指さざるを得ないので。 ときに、森下九段は米長先生の研究会で「10秒将棋は将棋が弱くなるからやり…
このような棋譜フォーマットに関する提案を見つけました。基本的に知恵袋はあまり好きではないんですが、これに関しては非常に面白かったので取り上げてみます。
改行コードの判別+各行のふるい分け(バージョン/開始局面など)を簡易的に実装してみた。 OS標準の改行コードと、棋譜データ内で使用される改行コードは必ずしも同一ではない、ってことがちょっとやっかいですね。私がコード書いてる環境はLinux(改行=LF)…
少なくともcsaの読み込みで需要かありそう、とうことでWikipediaのInterpreterパターンのコード例をためしに実装してみた。 なんか、感想としては(逆ポーランドのおかげなのかもしれんけど、)こんなにあっさりインタプリタ実装できちゃっていいの?と言う…
floodgateで入手できる棋譜はアーカイブされてて非常に利用しやすいです。日付ごと、対局者ごとにまとめられているのがありますが、リンクを1個1個クリックしていくのがあまりにめんどいので、ひとまず2012年、2011年分の1年区切りのアーカイブを落としてみ…
client以下のソースをmakeしたらエラーだった。
棋譜を学習するにもまずは棋譜データ、あとそれを読み込むためのプログラムがないと始まらない。 棋譜の対象としては 棋譜でーたべーす floodgate 手元のボナンザに指させて地道に収集 自分が対戦して保管してる棋譜(およそ180局) 手元のボナンザを使って棋…
少しはオブジェクト指向の理解も始まりだした、かな?
クラス設計について、ちょろっと考えたこと。
リンク。 いもあらい。 - 将棋盤インタフェース。 NTTソフトウェア - Android向けアプリケーションのユーザインタフェース 1つ目はOO的思考がまだ身についてない私的には大いに参考になります。2つ目はAndroidって所に惹かれます。私のアンテナのドストライ…
AI作る!とか言っても、何をすればいいやらわからない。AI界の全貌がよくわからないし、ほにゃらら探索がーとか言われても「?」って風にしか感じられません。 そんな私がなんとなしに考えてみたことなど。 主にC言語脳、時々オブジェクト指向脳でいこうと思…
そのまんま。 実装検討の一環として試作してみました。 クリックするとその駒の利きが黒く表示されます。 ただし、 実装に「敵の駒」「駒台」の概念がない 味方の駒を突き抜ける もう一回クリックしたからってキャンセル操作みたく動いたりはしない ↑よって…
実装レベルに近いお話。
継承について。 「内包」「外延」「機能」 これらの違いをわきまえて、正しい設計を行いましょう、という話ですが、未だ私にはまだよくわかりません。特に機能と外延の違い。ソフトウェアの話に持っていこうとすると途端に区別できなくなります。 orz
振る舞い(behavior)に関するパターンの1つ、Stateについて。
このブログについて。