象歩将棋
Webと将棋で何か具体的なもの作って行こうとしてます。
このまま記事を入力し[投稿する]ボタンを押せば当サイトに送信されます。
以下の文章は注意書きです。
名前はかならず記入してください。ハンドルネームでも構いません。
またパスワードを入力することをお勧めします。
その場合他人による *なりすまし* と区別出来るかもしれません。
さらにブラウザでクッキーを有効に設定してある場合あなたの記事は後で修正可能になります。
コメントスパム防止のため記事の内容を機械的にモデレート
(スパムである確率を計算)
する処理を通します。
どのような投稿であれ、たまたま計算誤差によりスパムとみなされ
秘密の場所
に収納される可能性があります。
その場合、管理人が手作業で正規の場所に移動しますのでお待ちください。
-
398
shu
2007/10/23 22:39
id: 3BVR6NRi4pQ
prob: 0.0%
-
-
プロファイリング
平手で少し進んだ局面。44手抽出に2秒/100万も時間を費やすので
$ gcc -p ...
結果は広く分散しちまってABC分析も使えない結果に。
いろいろ統廃合して再度測定してみると問題は数個のメソッドに収斂。
有効手を調べる処理に約70%の時間を費やしている。
盤面→駒セット変換に10%、手の保存に20%。
ちなみに、この辺のコードの改造はC++とvi環境ならそんなに苦にならない。
今はなんとか1秒/1M局面くらいにならないかなーって気分。
>397 悪い人はいません
でも食えないかも;;
-
397
pon
2007/10/21 20:38
id: 480oHczCgMM
prob: 1.5%
-
-
>http://www.nminoru.jp/~nminoru/programming/bitcount.html
Version5はすばらしいですね
こういう所で心が動く人に悪い人はいません
-
396
shu
2007/10/16 22:57
id: 3BVR6NRi4pQ
prob: 0.8%
-
-
リファクタリング
ようやく基本ルールでの可能手抽出処理を整理できました
たとえば以下のようなコードになります
---
CPieceMoves moves(手番、局面)
CMoveList mlist;
const CMove* p = moves.next();
while (p) {
mlist.add(p);
p = moves.next();
}
---
後は CMove インスタンスを評価するだけ
ちなみに 15 手抽出に 0.7秒/100万 (二歩、王手関連などはまだ含まない)
とりあえず普通のロジックで済ませてます & スレッドセーフ
まだ以下のような世界は怖いので踏み込んでいません
http://www.nminoru.jp/~nminoru/programming/bitcount.html
http://www.amazon.co.jp/gp/product/product-description/44340...
-
395
shu
2007/10/15 20:20
id: 3BVR6NRi4pQ
prob: 0.1%
-
-
棋譜ブラウザ 0.5.5 for Win
ftp://owa.as.wakwak.ne.jp/pub/shogi/windows/
明日から第20期竜王戦なので負担にならないように If-Modified-Since 対応版です
サイトにはもう盤駒が用意されてるようです。
http://live.shogi.or.jp/ryuoh/kifu/071016.kif
試してみたところ、二回目でちゃんと 304 Not Modified が返って来ました。
と言いながら、まあ本当の竜王戦サイトや 2ch で鑑賞された方が楽しいとは思いますけど;;
http://live.shogi.or.jp/ryuoh/
http://www2.shogi.or.jp/live/
-
394
shu
2007/10/13 14:53
id: 3BVR6NRi4pQ
prob: 2.6%
-
-
> 木を見て森のような
うまいね^^
でも、まだツリーまで行ってませんから;;
ちなみに 96byte/局面、1,000,000局面/秒くらいは行けそうな予感
詰将棋の完全ツリー探索だと一秒以内で解けるのは 15 手詰めくらいまでかなー
> 思考を打ち切るロジックが先
御意
-
393
pon
2007/10/13 10:54
id: 480oHczCgMM
prob: 1.0%
-
-
>駒一個で一手詰めは確かに存在するけど三手詰め以上・・・
>詰みが無いならロジック判定部分で少し得
さすが!
するどいですが、木を見て森のような・・
その局面にたどり着いた場面では、思考を打ち切るロジックが
先に動くことになりそうですね^^;
-
392
shu
2007/10/12 22:03
id: 3BVR6NRi4pQ
prob: 5.4%
-
-
では先手の駒一個だけの詰みは?
三手詰み以上で最終的にこういうことってあるのかな。
駒一個で一手詰めは確かに存在するけど三手詰め以上だとどうなんだろう。
平手の場合、遷移し最終的に駒一個の詰めに成ることがあり得るのかなー
もし詰みが無いならロジック判定部分で少し得をすると云うだけなんだけど;; (笑
-
391
shu
2007/10/12 21:54
id: 3BVR6NRi4pQ
prob: 0.1%
-
-
ステイルメイト
将棋なら勝ちですが、チェスの場合引き分けだそうです。
http://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%86%E3%82%A4%E3%...
以前話題に上がったと思うけど、失礼
追記: ちょっと修正した;; 10/13
-
390
shu
2007/10/06 22:59
id: 3BVR6NRi4pQ
prob: 0.1%
-
-
駒移動の静的ルールクラス完了
コアな部分のコードは 1099 行
全移動リストは取得できるけどそのまま使うとは限らない。
全打駒リストはとりあえず作らないつもり。
*ある条件のもと*での手の抽出を考えないといけない。
やはり詰将棋を題材に考えるのが楽かな。
処理を 100 万回繰り替えして 0.8 秒くらい。改良の余地はあるけど今はこれで良し。
図をクリックすると実行出力みられます (図は村山隆治氏の流鏑馬100番の1)
-
389
pon
2007/09/22 19:04
id: 480oHczCgMM
prob: 0.3%
-
-
>駒クラスは廃止
1度目のリファクタリングのとき抽象化でどの位すっきりするか試してみましたが、
結局思ったほどの成果がなく、2度目の構想を考えていました。
(実際、詰め将棋のところで汚いコードを書くはめに)
仕事と遊びに頭を占有されしばらく保留・・・とほほ
修チャンの構想をヒントに、また少しその気になってきました。
前回は将棋をチェス、チャイナ将棋、タイ将棋のように少しずつルールが異なる場合の
抽象化をやってしまったことに気が付きました。
今回の(リファクタリング)テーマは性能と疎結合化です。
日本将棋に絞り無駄な抽象化いっさいやりません。
ルールは静的に、ただし、ルールのロジックは要素(プレーヤ、盤、駒台、駒、・・・)
の構造に左右されない疎結合化を計ります。
また1から作り直しです。;;
|