象歩将棋
Webと将棋で何か具体的なもの作って行こうとしてます。
このまま記事を入力し[投稿する]ボタンを押せば当サイトに送信されます。
以下の文章は注意書きです。
名前はかならず記入してください。ハンドルネームでも構いません。
またパスワードを入力することをお勧めします。
その場合他人による *なりすまし* と区別出来るかもしれません。
さらにブラウザでクッキーを有効に設定してある場合あなたの記事は後で修正可能になります。
コメントスパム防止のため記事の内容を機械的にモデレート
(スパムである確率を計算)
する処理を通します。
どのような投稿であれ、たまたま計算誤差によりスパムとみなされ
秘密の場所
に収納される可能性があります。
その場合、管理人が手作業で正規の場所に移動しますのでお待ちください。
-
425
pon
2008/02/21 12:36
id: ou/hhkgTDac
prob: 41.1%
-
-
■思考エンジンについて
考えてみれば、簿何座は次のポリシーで実装したものと思われます。
1.DBエンジンに抽出を任せる
2.選択ロジックを実装する(CPU使用)
3.DB情報にフィードバックする
4.将棋ルール等は某氏のソースをそのまま使用
ポイントは、DBのリソースのフル活用により、(実際はDBではありませんが)
・機能間の疎結合化
・CPUの負荷の軽減化
を図り、コアな部分だけCPUリソースでロジックを走らせる戦術により
高速化を図っている事だと思います。
・・・To Be continued
-
424
shu
2008/02/21 00:13
id: 3BVR6NRi4pQ
prob: 0.2%
-
-
> ルール(ロジック)はどのクラスに実装されていますか
駒の動きは128ビットクラスで実装する。
驚くほどシンプルに実装できる。駒の機能は本質的にグラフィカルなためかな?
汎用駒クラスのインスタンスに関数ポインタを一個持たせるだけ。
ループとか条件分岐をあまり使わずに実装できそう。
> 思考エンジン以外はインターフェースを作れば、実装は誰が行っても速ければよい
そう思います。2015年までには128ビットデータ処理マシンが誕生してると思うので、
そうなれば今の128ビットクラスは不要になり、性能も二桁くらい向上するかも。
IPv4 枯渇とか、暗号化問題とかあるので、そのからみでたぶん実現されると思ってますが?...
> インターフェースが綺麗なら思考エンジンの作成がより楽
水平思考や垂直思考、私はどう考えたら良いか解りません。
とりあえず詰将棋やりながら考えてみます。
逆に序盤戦を考えるのが一つのヒントになるのかもしれません。
-
423
shu
2008/02/15 22:08
id: 3BVR6NRi4pQ
prob: 0.0%
-
-
> ルール(ロジック)はどのクラスに実装されていますか
将棋盤でも駒クラスでもありません
盤と駒の配置を元に、次の手イテレータ CMovesIter を生成します。
CMovesIter は指手の駒単位に set を返すクラスです。
ルールは set の制約条件として実装するつもりです。
要はプログラム的に必要になった時点で判断するということですが、
"あとで指せる手はあとまわしにしましょう、という考え方"
とかと妙に符合しておもしろい。
http://d.hatena.ne.jp/umedamochio/20080210
> インターフェースが綺麗なら思考エンジンの作成がより楽
小山に登ってみたら、まずその辺を見渡すのが良いのでしょう。
好みのインタープリタが欲しいなと少し思ってます。
追記:
ルールへのポインタは駒クラスに置いてあります。
-
422
pon
2008/02/15 12:43
id: ou/hhkgTDac
prob: 0.6%
-
-
>↓ C++で普通に9x9ボードクラスを作り、駒の移動はポインタで実装 ← 今ここ
抽象化の話しですが、駒の移動(移動可否の判断)はボードクラスが持つのでしょうか。
移動可否を判断するためには、ルールに判断を委譲することになります。
現在、ルール(ロジック)はどのクラスに実装されていますか。
恐らく、思考エンジン以外はインターフェースを作れば、実装は誰が行っても速ければよい
ということになると思います。
インターフェースが綺麗なら思考エンジンの作成がより楽になるのでしょう。
思考エンジンこそ抽象化の出番なんでしょうが、扉が見えてきません。
半年ほどやってませんし、この先もなかなか・・・ 修ちゃんに期待してます。
-
421
shu
2008/02/14 22:06
id: 3BVR6NRi4pQ
prob: 0.1%
-
-
駒の移動方法
↓ Cで関数ポインタ使って、その場その場でいろいろ (煩雑で失敗作かも)
↓ Python で駒クラスを作り、そのオブジェクトにルールを持たせた (PyZume)
↓ Cで静的なテーブルにルールをすべて持たせた (まあ速い)
↓ Cでビットテーブルとビット演算で処理 (少し速い)
↓ C++で普通に9x9ボードクラスを作り、駒の移動はポインタで実装 ← 今ここ
さて、いよいよ局面探索の「第一の扉」を開けそうです^^
「扉の向こうに待ち受けるのは奇跡か、それとも破滅か!?」 ... なんて
-
420
shu
2008/02/14 21:25
id: 3BVR6NRi4pQ
prob: 4.6%
-
-
第33期棋王戦サイト
棋譜ブラウザで見られました。感謝^^
http://www.kyoto-np.co.jp/shogi2008/kiousen33-1.kif
107手目▲23飛成で佐藤の玉が詰んでるように見えたんだけど、
▽22角で逆王手でした;;
-
419
shu
2008/02/13 23:00
id: 3BVR6NRi4pQ
prob: 1.7%
-
-
>たった千行に
小高い丘に立って見ましょう
そこに私は居ません;;
まず PyZume に rush かけてます。
Do not stand at my codes and weep.
ところで第33期棋王戦サイト
http://www.kyoto-np.co.jp/shogi2008/
Java と JavaScript 併用なので見られません。
ラッシュ佐藤と羽生、観戦出来ないのは残念。
-
418
pon
2008/02/13 12:34
id: ou/hhkgTDac
prob: 3.0%
-
-
>たった 1000 行に
暴露本は1000 行に1日
純文学は1000 行に100日
プロ棋士は1手に3時間
・・・
考える範囲が広がっているだけではないでしょうか?
-
417
shu
2008/02/12 23:25
id: 3BVR6NRi4pQ
prob: 0.5%
-
-
たった 1000 行に
いったい何日かかるんだろう。
昔は一週間に何千行も平気だったのに;;
-
416
shu
2008/02/11 22:38
id: 3BVR6NRi4pQ
prob: 0.0%
-
-
抽象化って?
確かに勝手に夢想してる時は楽しいのですが。
具体的な考えも定まらないのに抽象化を考えるのは、ほとんどの場合意味の無いことです。
思い付きがいくらあっても足場を作らないと先には進めません。
そういえばこの前、空を見て歩いていたら、足を痛めてしまいました。
反省して、まずは小さな山に登ろうと思います。
振り返ってみると、詰将棋プログラム PyZume が GUI 付きでそれなりに動いてます。
ロジックは未完成で、コアなコードを見ると python で 1159 行でした。
これを C++ で置き換えて、とりあえず納得できるコードにしようと思います。
スパイラルって最近はネガティブフィードバック的な使われ方が多い気がするけど、
本来は自然界にある普遍的な成長曲線の一種です。よね;;
|