チェスのナイトの動きを覚える-スクロールチェス
http://d.hatena.ne.jp/readingknowledge/20081024/1224852050
http://www.kotoriyama.com/ScrollChess/
こういうことしたいんだよね。
でもうちのPCではみられない。
最近は JavaScript:off, Java:off, Flash:off, カップヌードル:off だから。
象歩将棋
Webと将棋で何か具体的なもの作って行こうとしてます。
JavaScript三日目
フルスクラッチから作ってみた。知らないことばかり。
ZShogiのクライアントとしても使えることは解った。
FirefoxアドオンもJavaScriptで作るものらしい。
http://www.itmedia.co.jp/bizid/articles/0802/29/news033.html
http://developer.mozilla.org/en/docs/Building_an_Extension
http://roachfiend.com/archives/2004/12/08/how-to-create-firefox-extensions/
JavaScript二日目
LL言語として、使えるし面白い^^
ZShogiのクライアント側GUIとしても有望だと思う。
ネットで公開されてる棋譜表示スクリプトを初めて眺めて見たけれど、
その将棋配信サーバが落ちるのも、今ならなんとなく解る;;
JavaScriptで将棋盤を表示してみた
駒を移動してもチラつきがなく良好^^
でもそれだけでは少ししかメリットが無いよね。
画面表示そのままでgetかpostメソッド使いたい。
要するに最新棋譜だけをgetし効率良く盤面を再表示したいのだけど、
Ajaxとかのノウハウを取り込めば可能なのかな?
# JavaScriptは今まで食わず嫌いだったので、これから修行しないといけません;;
流鏑馬十番まで解けた
処理時間は0.1秒前後(0.5M〜2M局面/秒)
持ち駒を考慮した場合の盤面ハッシュのコンフリクトは非常にまれ。
盤面の圧縮 >462 は無意味なので捨てた。
局面空間のメモリ管理は単純な方法で済みそう。
しかし無双一番は依然手強い。未実装なものは、
1) 局面空間メモリ管理
2) 探索における同一盤面ノードの処理
3) 低級な指し手の優先順位(成り優先とか)
4) 無駄な合駒の処理
持ち駒情報を追加
局面の重複判定の精度は向上したので、流鏑馬二番は解けた。
5,615行
流鏑馬二番が解けない
これは持ち駒情報を持っていないため。
(久しぶりに試してます;;)
20〜24ビットに丸めたハッシュキーのコンフリクトは探索局面の 0.1% くらいなのに対し、
同一盤面(局面の持ち駒を考慮しない)のヒットは探索局面の半分くらいに発生する。
持ち駒はハッシュキーに含める方法もあるけど、
同一盤面であることの情報も欲しいので、キーには入れず値の方に持つことにする。
持ち駒は32ビットで十分表現できる。(現実には玉Kは不要)
?.....P...L...N...S...G..B..R..K
00000000000000000000000000000000
引き算が必要になる場合は、引かれる方の各先頭ビットを立てれば良いだろう。
01000001000100010001000100100100
参考サイト:
http://ameblo.jp/professionalhearts/entry-10003663090.html
http://www.emit.jp/prog/prog_b.html
そろそろインタフェースの準備
python の ctypes モジュールを使うと楽できそう。
http://blog.goo.ne.jp/anoydevl/e/a1193ca3cafed036c8c232ac4a14d894
http://ymasuda.jp/python/ctypes/tutorial_jp.html
C++ クラスの wrapper 関数をこしらえた後、
$ python2.5
>>> import ctypes
>>> so=ctypes.CDLL("./libCShogi.so")
>>> ob=so.cshogi_create()
CShogi:: new
>>> so.cshogi_hello(ob)
CShogi:: Hello, CShogi!
>>> so.cshogi_delete(ob)
CShogi:: del
>>>
簡単だぁ (^^;
> 再帰探索処理をデータ保存クラスと探索処理クラスに分離
探索モジュールをじっと見る
すると脳内で再帰処理のシミュレーションが始まる。
しだいに脳が再帰処理と同化して行くのが分かる。
たとえば処理の一部を変更しただけですべてが変わる。
まさかフェルンデクライス・メソッドとかに通じるものがあったりするのだろうか。
http://lightson.dip.jp/blog/seko/1610
正確に処理を記述するには状態遷移表とかを書くのが定跡なのだろうが、
今回は紙と鉛筆を禁止してるので、しばらくは脳内で遊ぶことにしよう。
亀の歩み
再帰探索処理をデータ保存クラスと探索処理クラスに分離、
ツリーの三色塗り分け問題にまでは到達できた。
反復深化法での処理を組み込み中。
4,716行