目指せ、第27回世界コンピュータ将棋選手権☆ ポナンザ・チェイナーを倒そうぜ☆(^~^)<その1>

2017-04-17

KITASHIRAKAWA_Chiyuri_80x100x8_03_Ahee

「いや、それより この動かない12マスのビットボードをなんとかしないと☆」

kifuwarabe_80x100x8_04_tententen

「早く直せだぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu

「どこを壊したの?」

KITASHIRAKAWA_Chiyuri_80x100x8_03_Ahee

「いや、それより来月のレンタル・サーバー代と家賃と滞納している健康保険とガス代と様々なものを払おうぜ☆?」

kifuwarabe_80x100x8_09_umm

「同時には無理なので……☆ まずは ビットボードから直してはどうだろうか?」

OKAZAKI_Yumemi_80x80x8_01_Damaru

「配列で良かったのに……」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「いや、128ビットのビットボード 1つでも使いこなせないと

コンピューター将棋の指し手生成の作り方の半分しか 勉強したことにならないので……☆」

KIFUWARABE_80x100x8_01_Futu

「勉強しなくていいのに……☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu

「どう壊れたの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「探索している間に ビットボードから駒が消えているぜ☆

探索は 先後入れ替え 再帰ループ なので、デバッグするのは 鬼のように難しい☆」

KIFUWARABE_80x100x8_01_Futu

「じゃあ 探索は 1手 にしようぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なるほど、犬のように簡単だな☆」

OKAZAKI_Yumemi_80x80x8_01_Damaru

「犬に噛まれてきなさい」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「探索を1手で止めるような作りになってないんだが……☆」


23:07

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「サービスの更新に伴い、アカウントのパスワードを設定しなおしてください、とかいうメールが来るんだが、

パスワードとか 覚えてないよな☆ 解約もできない☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu

「どんどん 使ってないサービスは 放置していきなさい」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「反復深化探索をオフにして、探索深さを1にしてみるかだぜ☆?」

set HanpukuSinkaTansakuTukau false

set SaidaiFukasa 1

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これを bitboard-test.txt ファイルに書いて保存し……☆」

@bitboard-test

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「と打鍵するぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これで探索してもエラー☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「探索した枝数 は 記憶してるんで……☆」

Util_Tansaku.cs

/// <summary>

/// 探索した枝数☆

/// </summary>

public static int TansakuTyakusyuEdas { get; set; }

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「最大枝数 とかいう、テストでしか使わないオプションを作るかだぜ☆」

KIFUWARABE_80x100x8_01_Futu

「大会モード、非大会モード を分けてはどうだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そんな工夫するだろ☆

大会当日に 非大会モード で出場したりするんだぜ……☆(^~^)」


23:43

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「調べたところ、探索1手目から ビットボードの上の駒が消えているぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu

「誰が消したの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「DoSasite メソッドだと思うんだが、正確に範囲を絞り込む方法を考えるぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「コンソールに盤面を表示するには……☆」

Util_Commands.Koma_cmd(“koma”, syuturyoku);

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「みたいな感じで 1行 挟んでおけばいいか……☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「あっ、2プレイヤーのコンピューターも 人間操作にしとこ☆」

set P2Com false

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「TansakuKaisi_ メソッドの開始時には 2Pの駒は盤上にあって、

DoSasite メソッドの開始時には 2Pの駒がなくなっているぜ☆」

OKAZAKI_Yumemi_80x80x8_01_Damaru

「その間を 細かく見ていきましょう!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「指し手生成前は おっけー で、

指し手リストループ前は えぬじー だぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu

「その間を細かくみていきましょう!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「指し手生成で トライを作っても まだ 盤の上に駒はあるぜ☆

指し手生成が終わると 2プレイヤーの駒が 盤の上からなくなっているぜ☆」

OKAZAKI_Yumemi_80x80x8_01_Damaru

「その間を 細かく見ていきましょう!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ぼっち緩慢指後 まで おっけー☆

捨て緩慢指後 に えぬじー☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu

「その間を 細かく見ていきましょう!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「こういう書き方があったんだが……☆」

Bitboard friendKomaBB = ky.BB_KomaZenbu[(int)ky.Teban];

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これでは friendKomaBB の編集時に ky.BB_KomaZenbu 配列の内容が変わってしまう☆

そこで次のように変えることにするぜ☆」

Bitboard friendKomaBB = new BitboardImpl();
friendKomaBB.Set(ky.BB_KomaZenbu[(int)ky.Teban]);

OKAZAKI_Yumemi_80x80x8_01_Damaru

「再発防止をする方法は?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「配列を ラッピングしてしまえばいいんだが、大会用のプログラムでやりたいような工夫ではないぜ☆ トレードオフの 速度低下が痛い☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「注意しろ、としか☆」

KIFUWARABE_80x100x8_01_Futu

「注意しろ☆!」


01:19

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「次のバグ☆」

指し手に該当する戻せる駒が無かったぜ☆(^~^) sasite=B4A3

駒の場所

┌──┬──┬──┐┌──┬──┬──┐

│  │  │  ││ 〇 │ 〇 │ 〇 │

├──┼──┼──┤├──┼──┼──┤

│  │  │  ││  │ 〇 │  │

├──┼──┼──┤├──┼──┼──┤

│  │ 〇 │  ││  │  │  │

├──┼──┼──┤├──┼──┼──┤

│ 〇 │ 〇 │ 〇 ││  │  │  │

└──┴──┴──┘└──┴──┴──┘

OKAZAKI_Yumemi_80x80x8_02_Syaberu

「もう既に 駒 戻ってんじゃないの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「最大枝数 とかいう変なオプションを入れたことも怪しいぜ☆」

OKAZAKI_Yumemi_80x80x8_01_Damaru

「調べなさい」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「分かったぜ☆

アサート を入れてるんだが、評価値は

駒割り、二駒、お決まり の3本柱の内訳と一致させる必要があって、

評価値=-1 と入れたら、

駒割り=0、二駒=0、お決まり=-1 のように帳尻を合わせる必要があったのが1つ、

探索を打ち切るときは、アンドゥするか、しないかをちゃんと指定するのが1つだぜ☆

両方設定したぜ☆」

KIFUWARABE_80x100x8_01_Futu

「よし、対局しようぜ☆?」


01:55

kitashirakawa_chiyuri_80x100x8_05_hehe

「勝ったぜ☆!」

\ ぷっくぅ /

kifuwarabe_80x100x8_09_umm

「むーっ☆」


01:58

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「将棋盤の表記を 9×9 に変えたいんだが、いい書式はあるだろうか☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「囲碁座標とか楽なんだが☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu

「いいんじゃないの?」

 

はてなブックマーク - 目指せ、第27回世界コンピュータ将棋選手権☆ ポナンザ・チェイナーを倒そうぜ☆(^~^)<その1>
Bookmark this on Yahoo Bookmark
Buzz This
Bookmark this on Google Bookmarks
Bookmark this on Digg
Share on Facebook
Share on reddit
Share on LinkedIn
Share on StumbleUpon
Share on GREE
email this
LINEで送る
Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です