【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(17) 駒台に駒を置くときは、表返そうぜ☆ww

2015-09-08 16:24

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「前回のあらすじ☆

駒台に馬が乗っていたんだぜ☆」

KIFUWARABE_80x100x8_02_Hidosu

「……☆!」


17:13

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やばす☆」

KIFUWARABE_80x100x8

「ほう☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『巻き戻しボタン』としては、

棋譜に書かれている『指し手データ』を見て局面を巻き戻していくので、

取った駒が成っていたのか、成っていなかったのか、

『指し手データ』に 覚えておいて欲しいんだぜ☆」

KIFUWARABE_80x100x8

「ほう☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『駒台』としては、成った駒なんか、置いてほしくないんだぜ☆」

KIFUWARABE_80x100x8

「 うむ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『駒台』の上に駒を置け、という指示は 『指し手データ』に

書かれてある通りにやっている☆」

KIFUWARABE_80x100x8

「だったら 駒台は 『指し手データ』に書いていない動き、

表面を上に向ける、を勝手にやったらどうだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なるほど☆」


17:51

201509081750

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「局面データの駒台に 角 を置くところまでできたので、

この局面データを 棋譜 に差し込みたいぜ☆

今は、角に表替えす前の 局面データが 棋譜に差し込まれているぜ☆」

KIFUWARABE_80x100x8

「直せ☆」


18:05

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 きふわらべの『一手指しルーチン』は、一手指すと 棋譜 まで

書き替えてくれるんだが、これが余計なんだぜ☆

棋譜を書き替えずに、一手指した後の局面データだけ欲しいんだが、

がんばって棋譜を書き替えているぜ☆」

KIFUWARABE_80x100x8

「処理を 『1手指した局面を得る』と、

『棋譜を書き換える』の 2ステップ に分けろなんだぜ☆」


18:29

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「新規追加と、上書きを分けてみたぜ☆」

201509081829


18:48

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「カレントコードを削除する、というコードを 取り除かないと

改造が進まないぜ☆」

201509081848

KIFUWARABE_80x100x8

「そのコードを取り除くのが先だな☆」


21:00~22:15

在宅バイト☆

\ ぶくぶくぶくぶくぶくぶく /

KITASHIRAKAWA_Chiyuri_80x100x8_04_Aozame


 

22:27

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「再開だぜ☆」


22:43

201509082243

KITASHIRAKAWA_Chiyuri_80x100x8_04_Aozame

「次元☆! きふわらに 何かまずいものでも食べさせてしまったか☆!」

KIFUWARABE_80x100x8_02_Hidosu

「ぼーう ぼーう☆!」


22:57

201509082256

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「直したぜ☆」

KIFUWARABE_80x100x8

「おう☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「一手を指し手も、局面データをいじらないようにしてみたぜ☆

棋譜の後ろに追加するだけ☆」

 


23:52

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「局面データをいじる部分と、棋譜を伸ばす部分を分けたぜ☆

局面データは直っていたんだが、棋譜を伸ばせなかったんだが、

部品を分けて 直したぜ☆」

201509082351

KIFUWARABE_80x100x8

「やったな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これで 棋譜を もう少し読めるようになるぜ☆ww」


2015-09-09 00:03

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「次の手を指そうとしたときに落ちたような☆

このへんだったかだぜ☆」

201509090002

201509090004

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「指定された指し手は、棋譜ツリーの、次のノードリストの中に無い、

と言っているみたいだな☆」


00:07

201509090007

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 打 じゃない場面で、打を指示してるんじゃないか☆?」


00:15

201509090014

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「今度は 馬を打しろ、という指し手がエラーの原因か☆」

KIFUWARABE_80x100x8

「この SFEN を作っている部分はどこだぜ☆?」


00:25

201509090025

201509090032

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「場所は分かったぜ☆」


00:36

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「SFENの+は 打 じゃなくて、 成り だったか☆」

201509090035

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「CSA棋譜の符号は、成り、をどうやって判別しているんだぜ☆?」

KIFUWARABE_80x100x8

「調べろ☆」


00:50

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「指す直前の局面を持っていれば、CSA符号から 元位置は分かるので、

元位置にある駒が 成っているか、成っていないか を調べれば、分かるぜ☆」

 

02:29

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「はまってるぜ☆

わたしの 棋譜 は、SFEN符号 で動くんだが、

CSAの棋譜を読み込もうと思ったら、CSA符号 で動く棋譜がいるんだぜ☆

CSAをSFENに変換しようと思ったら、CSA符号で 棋譜 を動かしながら

SFEN に変換していくことになるんだが、

CSA符号では わたしの棋譜 は動かないんだぜ☆」

KIFUWARABE_80x100x8

「状況は☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「後手の持ち駒の角(升121)を、升60(7七)に打ち込みたいんだが、

升121に駒がないみたいなんだぜ☆」

KIFUWARABE_80x100x8

「取った駒を、ちゃんと駒台に置こうぜ☆!」


03:28

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「CSA棋譜だと、駒台は “00” なんだが、

きふわらべ棋譜だと、駒台にも番号が振ってあって 160~200 をちゃんと指定しなければ

ならないんだぜ☆ そこは対応した☆」

KIFUWARABE_80x100x8

「次は、CSA符号を SFENに変換するときに、

CSA棋譜の局面を見て、動かす前の駒の種類を調べるところからだな☆」


04:03

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「CSA棋譜の1手前の局面をみて、動かそうとしていた駒が、成り駒だったのか、

そうでなかったのかを 見にいくようにしたぜ☆」

201509090403

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これで、馬を動かしたときに、馬成り と言わないようにできたぜ☆」

201509090400

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「馬がバックできたぜ☆ww」

KIFUWARABE_80x100x8

「やったな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「まあ、この先、歩がぶつかったところでも 強制終了するんだが☆」


04:14

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「さっきは この2筋の歩がぶつかったあたりで 落ちたんだぜ☆」

201509090413

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「2四歩は大丈夫だったぜ☆ その次の手を指す直前に 強制終了したぜ☆」

KIFUWARABE_80x100x8

「先手が 持ち駒の歩を打とうとしているな☆」


04:22

201509090422

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「2三に 歩を打とうとすると 落ちるんだぜ☆ 後手も同じ☆」

KIFUWARABE_80x100x8

「打つのが怪しいんだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「合法手リストには 『歩打』 が1つもないんだぜ☆ 怪しいぜ☆

2歩判定の誤動作か、それとも合法手生成が 『歩打』 を認識していないのか☆?」

KIFUWARABE_80x100x8

「調べろ☆」


04:27

201509090427

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「角を持っているときは、合法手に 角 の手がずらっと並ぶので、

歩を持っているときも、 二歩と打ち歩詰めにならないように、ずらっと並んで欲しいんだぜ☆」

 


04:47

201509090446

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ここらへんが怪しいぜ☆ 持ち駒の利き☆」

KIFUWARABE_80x100x8

「持ち駒の利きを調べた後に使う関数みたいだな☆ これの呼び出し箇所が怪しいぜ☆」


04:58

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「二歩チェック、間違ってるんじゃないか☆?」

201509090458

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これから置こうとしている升 を調べなければならないのに、

駒台の どこに置いてあったか、を見ているんじゃないかなんだぜ☆?」

KIFUWARABE_80x100x8

「一応、移動先の升を見ているようだぜ☆

ただ、歩が18枚持ち駒のとき、18回判定することになるぜ☆

そして、どの升に置くかは なんで1升だけなんだぜ☆? 60升ぐらいないのかなんだぜ☆?」


05:39

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「2歩チェック、間違ってたんじゃないか☆? 書き直したぜ☆」

201509090539

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「一応、歩も打てるようになったし……☆」

201509090540

 

KIFUWARABE_80x100x8

「やったな☆!」


05:54

201509090554

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「圭の画像が表示されてないぜ☆

ファイル指定ミスか、ボタンの連打のせいかなんだぜ☆?」


05:57

201509090557

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そして 終わらない出力が始まったぜ☆?」


06:15

201509090615

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「圭 と 歩 のグラフィックが一緒になっているのかなんだぜ☆??」


06:20

201509090620

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ファイル名は 合ってると思うんだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「持ち駒に歩が18枚あっても、18回 打てる場所を調べないように、

打てる場所を調べるのは、駒1種類につき 1回に制限したぜ☆」

201509090623

 


06:37

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「次の 7三桂成 が、7三歩 の表示になるバグが再現するか、試してみるぜ☆」

201509090637

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「再現したぜ☆ そして 次の 6五飛 を打ち込む直前に強制終了するはず☆」

201509090641

 


06:51

201509090651

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「8三飛打 は、合法手にない、というエラーで落ちるんだが、

合法手のリストに SFEN文字列 も出したいぜ☆」


07:10

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「わたしの目は ふしあな だったのかなんだぜ☆」

201509090710

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「R*8c が正しいんだが、 H*8c なんて符号を作ってしまっていたぜ☆」

KIFUWARABE_80x100x8

「ドンマイ☆ww」


07:24

201509090724

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「さくさくと キータイピングして Hisya か☆ Hだな☆ とタイピングしたのかもしれないぜ☆」


07:27

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「直したぜ☆ 直ったぜ☆」

KIFUWARABE_80x100x8

「やったな☆!」


07:46

201509090745

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「成り駒の表記がずれてる気がするんだぜ☆」


07:57

201509090757

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「とりあえず、1つの棋譜を、最後まで読めたんだぜ☆」

KIFUWARABE_80x100x8

「やったな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「次は fv.bin もオープンしておくようにしよう☆

きふわらべの場合、 fv.csv なんだが☆」

 


08:21

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「窓の外から、朝の陽が照ってきたので、ブログも次の記事に分けるぜ☆」

 

CSA棋譜ファイルが読み取れるようになって、進展 あり なんだぜ☆!

第3回電王トーナメントに向かって 微速微進、遅々前進なんだぜ☆!

 

 

はてなブックマーク - 【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(17) 駒台に駒を置くときは、表返そうぜ☆ww
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(16) 局面の内部データを見たいんだぜ~☆ww

2015-09-05 22:48

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「自慢の写真をただ貼るだけの回は ほどほどにして、

きふわらべの開発を ちょっとでも進めるんだぜ☆www」

KIFUWARABE_80x100x8

「それは いいことなんだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「後手に、馬を打ってしまったり、歩を打つと強制終了してしまうバグがあるんだったぜ☆

そこで、局面の状況を 文字 で画面に表示したいんだぜ☆

グラフィックだけだと、本当の内容を全部表示できていないんだぜ☆」


23:12~01:11

在宅バイト ミーティング中

 

01:11~

再開


02:11

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「めっちゃ長い戦いだったぜ☆」

201509060209

201509060210

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ハハッ! 理解☆!」

KIFUWARABE_80x100x8

「ふむ☆ つまり、

駒を取ったら、表を向けて駒台に置くという 『設計』 で統一しているつもりだったが、

実装はそんなことはなかった☆

駒台の上には 馬 が置いてあった☆ それをそのまま盤上に置いた☆

ということかなんだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「と、思うんだぜ☆ 直すのは次にするぜ☆」

KIFUWARABE_80x100x8

「おう☆!」

 


 

02:17

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「プログラミング後は、 頭がポッポーとしていて、

腹もペコペコで 寝れないんだぜ☆ どうすればいいんだぜ☆?」

 

KIFUWARABE_80x100x8

「1日をいっぱい使って 寝る直前まで 作業をしようとしたのが 敗着だな☆

ディスプレイの光は 特に刺激的だぜ☆

今を 寝る3時間前だと思って PCの電源を落とし、

飯くって 風呂入って 3時間ボケーッとして

5時30分に寝たらどうだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おー人事 おー人事☆」

 

* きふわらべ が退出しました。(キックアウト)

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「21時……は無理でも

24時を過ぎたら PCの電源を落とす という健康法を 明日から試してみるか☆www」

 


 

きふわらべへの理解の深まり あり なんだぜ☆!

第3回電王トーナメントに向かって 微速微進、遅々前進なんだぜ☆!

 

はてなブックマーク - 【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(16) 局面の内部データを見たいんだぜ~☆ww
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(15) 早稲田~☆ww

2015-09-05 21:02

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ただいまだぜ☆ 今日はCSA(*)の例会があったので、早稲田キャンパスに行ってきたぜ☆」

*コンピュータ将棋協会

KIFUWARABE_80x100x8

「知ってる☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ここが南門だぜ☆」

20150905_COHezqNU8AAbol_

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「敷地内は 車も走ってないので、道のど真ん中を ぶらぶら歩けるんだぜ☆

道路って、歩行者のものだよな☆ww

江戸時代までの本当の道路は こんな感じだったんじゃないか☆ww」

 

KIFUWARABE_80x100x8

「馬車に轢かれるだろ☆」

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「入り口の敷地内地図を眺めていると、近くを歩いていた父娘ずれが

英語でしゃべっていたんだが、インターナショナルだな☆!」

 

KIFUWARABE_80x100x8

「近所の飯屋でも コンビニでも 駅でも 中国語も韓国語も英語も よく聞くじゃないか☆

お父んは 外国語をしゃべらないのか☆」

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「日本人の知り合いしかいないし……☆」

20150905_COI6hY9UEAA90tT

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「CSAの例会に行ったというより、早稲田大学の見物に行ったという方が正しいよな☆」

KIFUWARABE_80x100x8

「例会に出席するとは、なんて熱心な会員なんだ、と勘違いされていると思うぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「近くに大隈庭園があるらしいんだが、用事のない敷地には入りづらいぜ☆

次の例会は大隈庭園でやって欲しいぜ☆wwww」

20150905_COI6iu2UwAAIXBG

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ここが 用事のあった建物だぜ☆!」

KIFUWARABE_80x100x8

「用事はなかったんだが、支払った年会費の元を取るために リッチな気分を味わいにいった建物か☆」

20150905_COI6iJfUAAAdAcG

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「建物の中に建物があるんだぜ☆wwww

これを見れただけでも例会に行ったかいがあるな☆wwwww

自慢の写真が撮れたぜ☆wwww オリンピックはここでしようぜ☆wwwww」

KIFUWARABE_80x100x8

「そういえば、支払ったのは駅までの交通費だけだな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これも貼っておかないと、何しに行った人か分からないな☆wwww」

20150905_COI_ovjU8AAlwdf

KIFUWARABE_80x100x8

「斜めっていて、よく見えないぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「大丈夫☆」

20150905_COI_pRiU8AAfJZI

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「正面から見ても よくわからないぜ☆」

KIFUWARABE_80x100x8

「五角形は、将棋の駒を表しているな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「15時00分59秒ぐらいに到着したぜ☆ww 間に合ったな☆wwww」


20150905_COJDQ-uVEAAGbRH

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おおっ☆! 会議をしていたら もうこんな時間だぜ☆

冬は日が落ちるのも早いな☆!」

KIFUWARABE_80x100x8

「いーや、これは 会議の後に 近所の中華料理屋で食べたあとの帰りだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「次は東大の例会にも出たいぜ☆wwwwwww」

 

コンピュータ将棋協会

http://www.computer-shogi.org/

 

KIFUWARABE_80x100x8

「1年先のスケジュールまでホームページに出ているぜ☆

次は東京女子医科大学だな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ぬぐぐ☆! でも略すと 東大だな☆」

KIFUWARABE_80x100x8

「良かったな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「あっ☆ この表は2015年のだぜ☆」


 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「例会の場所は どういう法則性で決まっているのか、予想して調べたら、すぐわかったぜ☆

会員の出身校だな☆」

KIFUWARABE_80x100x8

「東京全部の大学を見物できなくて 残念だったな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おっおっおっ☆(;_;)」

 


 

 

はてなブックマーク - 【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(15) 早稲田~☆ww
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(14) 一手指すルーチンの見直し☆ww

2015-09-04 20:51

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「きふわらべの 『指し手データ』 というのは、次の内容を持っているんだぜ☆」

  • 指す前の駒
    • 駒の種類(歩~竜、エラー含む15種類)
    • 先後
    • 升番号(駒台や駒袋にも番号が振ってある。0~201の202升)
  • 指した後の駒
    • ※「指す前の駒」と同じデータ構造
  • 取った駒の種類

 

KIFUWARABE_80x100x8

「ふむ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これは、『巻き戻す』ボタンを使えるようにするためのデータ構造なんだぜ☆

バトルや、学習だけやるのなら邪魔なんだが、構わず こうしている☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『一手指すルーチン』は、この『指し手』の他に、一手指す前の『局面データ』と、

一手進めるのか、巻き戻すかのフラグ1つを 入力として引数に取るんだぜ☆」

KIFUWARABE_80x100x8

「いいんじゃないか☆?」


21:08

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『一手指すルーチン』は、その実行後、5つのデータを 成果として返すんだぜ☆」

  • 指した駒の番号。
  • 取った駒があれば、取った駒の番号。
  • 取った駒があれば、取った駒の種類。
  • 終了ノード。「進む」ときは、一手指す局面の「指した後」のツリー・ノード。「巻き戻す」のときは、ヌル。
  • 終了ノードの局面データ。

KIFUWARABE_80x100x8

「もやっとしているな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「構造を見直してみるぜ☆」


21:19

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「きふわらべの 『棋譜ツリー・ノード』 というのは、内容を3つに大別できるぜ☆」

  • 指し手データ(きふわらべ式)
  • 局面データ
  • これから指す手番の先後

KIFUWARABE_80x100x8

「 『棋譜ツリー・ノード』 じゃなくて、『局面データ』だけが欲しいんだが、

『進む』『巻き戻す』の機能のうち、『巻き戻す』の方で 『指し手データ(きふわらべ式)』も

一緒に返す仕組みになっているから、要らないデータも付いてくるんだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『進む』『巻き戻す』は別メソッドに分けるか☆」


22:04

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『進む』『巻き戻す』 は別メソッドに分けたんだが、

『棋譜ツリー・ノード』は 何手済み目かを調べるのに

本譜を 現在ノードから ルート・ノードまで走って 数を数えるのに使われていて、

 

『進む』『巻き戻す』 を別メソッドに分けたからといって、

『棋譜ツリー・ノード』は 省けないぜ☆」

 

KIFUWARABE_80x100x8

「何手済み目かを調べるのに、わざわざ 『棋譜ノード・ツリー』を作成する仕様なのか☆」

KIFUWARABE_80x100x8

「何で、『何手済み目』を調べているんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『ルート・ノード』か、そうでないかを調べたかっただけだぜ☆」

KIFUWARABE_80x100x8

「ツリー構造を見れば、Parentプロパティがヌルだったら、それがルートだと判別できるだろう☆

IsRoot( ) メソッドを作ろうぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「全くその通りだぜ……☆!」


22:32

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「IsRoot( ) を作って、それを使うようにしたぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『一手指す』ルーチンから、『棋譜ツリー・ノード』を省かないと やっぱり不便なんだぜ☆

棋譜なんかなくても、『局面データ』 1枚だけで 一手指したいんだぜ☆www

もっと分解してみよう☆www」


23:39

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「プログラムのどこかで、『親ノード』『子ノード』を見にいっているのか、

『棋譜ノード・ツリー』 が無いと、『一手指しルーチン』 が動かないんだぜ☆」

KIFUWARABE_80x100x8

「日本将棋連盟式の棋譜の符号を作るときは 『棋譜ノード・ツリー』 を使っているぜ☆

同歩、とか書くためには、1手前の局面を知ってないと 『同』 とは書けないからな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_04_Aozame

「ぶくぶくぶくぶくぶくぶく…」


23:58

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『棋譜ツリー』 が無ければ、 『一手指すルーチン(きふわらべ式)』 も動かない、ということで

ファイナル・アンサー☆?」

KIFUWARABE_80x100x8

「ファイナル・アンサー☆!」


 

2015-09-05 00:01

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「棋譜読取機の 『一手指す』ボタンを押すと、合法手が一覧される☆

その中には、棋譜の指し手も必ずあるので、

『一手指すルーチン』に、棋譜の指し手を 放り込む☆

ここまでは やってみるか☆」


0:07

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「棋譜読取機からは SFEN形式の指し手 は取れるんだが、

きふわらべ形式の指し手 は取れないんだぜ☆」

KIFUWARABE_80x100x8

「変換しろ☆」


00:25

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「棋譜読取機で 『一手指すルーチン』 を実行すると、

その手は既に指されている、みたいなエラーが出るんだが☆」

201509050028

 

KIFUWARABE_80x100x8

「合法手を調べるときに、既に指しておいたぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_04_Aozame

「ぶくぶくぶくぶくぶくぶく…」


00:40

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「既に指されている手があっても、項目を追加せずに カーソル移動するだけみたいな感じに

改造してみたぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「まだ 20手目の角打ちで、馬を打ち込んでいるバグがあるな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「どうして 馬 を打っちゃうんだぜ☆?」

KIFUWARABE_80x100x8

「ログで取れるといいんだが☆」


00:50

201509050050

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「先手の角の打ち込みは、ちゃんと角を打ち込んでいるぜ☆」

KIFUWARABE_80x100x8

「ゴクリ☆」


00:56

201509050055

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「後手の角の打ち込みは、馬を打ち込んでいるぜ☆」

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これは前にあったあれだろ、

表と裏をひっくり返すところを、間違えて 先後をひっくり返しているバグ☆

今度は 後手だと 表裏をひっくり返しているんじゃないか☆?」

KIFUWARABE_80x100x8

「直せ☆」


 

01:12

201509050111

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「後手番で 歩を打とうと思ったら、打つこともできずに エラーになったぜ☆www

これは 調査が大変そうだぜ☆ww

せっかく 盤の絵 を表示したんだが、内部データ構造を表していないんだぜ☆wwwww

内部データの駒一覧を リストボックスに 出した方が良さそうだぜ☆wwwwwww」

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「また 次回にしよう☆ww」


 

きふわらべへの 『一手指すルーチン』 は読みやすさの改善は まあ、だいたい あり なんだぜ☆!

第3回電王トーナメントに向けて、微速微進、遅々前進なんだぜ☆!wwww

はてなブックマーク - 【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(14) 一手指すルーチンの見直し☆ww
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(13) 一手指すルーチン☆ww

2015-09-02 12:38

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『一手指すルーチン』を整理するぜ☆ 」


 

15:02

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『一手指すルーチン』を掃除してみたところ、

  • 棋譜ツリーの 次のノードを作って 現在ノードにぶら下げる。
  • 作った次のノードを、これからの 現在ノードとして扱う (カーソル移動)

の2つを 大きな成果としているな☆」

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ポイントとしては、

  • 『一手指すルーチン』の途中で 現在ノードが変わる
  • 『一手指すルーチン』の途中で 次のノード(=途中から現在ノード)は、状態が変化する

ということがあるぜ☆」

 

KIFUWARABE_80x100x8

「次のように整理できないのか☆?

  • 編集対象のノードがある
  • 『一手指すルーチン』の終了後に 現在ノードが変わる

KITASHIRAKAWA_Chiyuri_80x100x8_03_Ahee

「うむむ☆! そんな風に作りたいぜ☆!」


15:14

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「何考えて こんな複雑なプログラムになってるのか わかったぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『現局面』 という言葉があるんだが、現局面って、一手指し終わったら変わるな☆

『現局面』 という言葉を使わず、

  • 『一手指し開始局面』
  • 『一手指し終了局面』

という2つの言葉を使えば いいような気がしてきたぜ☆」

 

KIFUWARABE_80x100x8

「 『現』なんていう時間指示語を使うから プログラムが動物になって走り回って

スケッチしづらくなるんだぜ☆

 

時間を指示しない変数名にすることだぜ☆

山のような静物ならスケッチもしやすいだろう☆」

 

KITASHIRAKAWA_Chiyuri_80x100x8_03_Ahee

「そうするぜ☆!」


15:31

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ルーチンの途中で ゲット・カレント() をするから

プログラムが動物になってしまうのか☆

ゲット・カレント()を プログラムの途中でやらないように要注意だな☆」

 


15:40

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「さらに混乱の元になっているのが、『一手進む』『一手戻す』を同じ関数で

やっているからなんだぜ☆」

KIFUWARABE_80x100x8

「正順で行う処理と、逆順で行う処理を 同じメソッドと言い張るのは

無理があるだろう☆

ラッパーにして 内部で分けているというのなら 有り得るが、

if文連打で 一緒にやっているのは やはり無理があるぜ☆」


19:33

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「棋譜ツリーは、指し手の符号を荷札、局面を内容 として持っているんだが、

指し手の符号通りに 指したとき、駒を取ったら、

荷札の方に 『駒を取った』 という印を付けているんだが、

これが余計なのか、処理のシンプルさを損なっているんだぜ☆」

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「あっ☆ 別件の在宅バイトの修正指示が来たんで そっちをやるぜ☆」

KIFUWARABE_80x100x8

「おつ☆」


 

 

 

はてなブックマーク - 【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(13) 一手指すルーチン☆ww
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(12) エントリーしたぜ☆ww

2015-09-01 22:32

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「旧・ぐれーすけーる のブログからの続きだぜ☆」

 

ぐれーすけーるブログ 『【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(11) 棋譜読取装置を作っていくんだぜ☆ww』

http://grayscale.dou-jin.com/Category/13/

 

KIFUWARABE_80x100x8

「進捗は どんなものなんだぜ☆?」

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「棋譜を読み込もうと思っていた……、ぐらいなところだぜ☆

第3回将棋電王トーナメントには申し込んでおいたぜ☆

なお、ボナンザ・ライブラリーは使用しないぜ☆」

 


22:40

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「前に いじってたのが 8月11日 か☆ 財布を落とす前じゃないか☆

何やってたのか 忘れているぜ☆」


23:42

KIFUWARABE_80x100x8

「問題が起こっているのか☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「バグ取りの途中で中断して、半月放置していたので、

頭の中を整理中だぜ☆」

 

201509012343

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「こんな感じで、棋譜を読み込んでいるんだが☆」

 

201509012346

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「途中で強制終了するぜ☆」

 

KIFUWARABE_80x100x8_02_Hidosu

「指し手生成ルーチンがやばい☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「CSAの棋譜を、SFENに変換するときに、 打 とか、 打 じゃないとか、

適当にやってるので、そこらへんが怪しいぜ☆」

 


2015-09-02 00:39

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「CSAの棋譜で 打 を表現するときは、移動元のマス番号が 00 なんだぜ☆

00 は 駒台だな☆」

'** 227 +6879OU -6465FU +6665FU
+6879OU
T17
'** 302 -7162GI +4958KI -5161OU +7988OU -6171OU +3948GI -7182OU +4746FU -6263GI +8786FU -5222HI +3736FU -3344GI +4847GI -3435FU +3635FU -4435GI +0036FU -3544GI +5867KI -7374FU +7887GI -8173KE +6978KI -2133KE +5756FU -4152KI
-6465FU
T8
'** 141 +6665FU -0066KA +8977KE
+6665FU
T24
'** 421 -0066KA +8977KE -6657UM +7988OU -5766UM +3948GI -5455FU +4958KI -5556FU +0018KA -6676UM +2826HI -4132KI +0054FU -7666UM +6564FU -9495FU +9695FU -0096FU +9996KY -6655UM +5867KI -5564UM +2656HI -0097FU +0065FU -6475UM +4857GI -7162GI +8786FU -9798TO +8898OU
-0066KA
T1
'** 225 +8977KE -6657UM +7988OU
+8977KE
T16
'** 416 -6657UM +7988OU -5766UM +3948GI -6676UM +4958KI -7675UM +4857GI -7162GI +5867KI -4132KI +5766GI -7542UM +3736FU -3344GI +0056FU -6263GI +4746FU -7374FU +2937KE -7475FU +4645FU -4433GI +8786FU -8173KE +7887GI -8384FU +6978KI
-6657UM
T8
'** 225 +7988OU -5766UM +3948GI
+7988OU
T9
'** 430 -7162GI +3948GI -5766UM +4958KI -6676UM +4857GI -7675UM +5867KI -4132KI +5766GI -7542UM +2524FU -2324FU +3736FU -3344GI +2937KE -9495FU +9695FU -0096FU +0086KA -9195KY +8642UM -5142OU +0061KA -9697TO +9997KY -9597NY +8897OU -0096FU +9786OU
-5766UM
T14

KIFUWARABE_80x100x8

「SFENでも、 打 は表せるだろう☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うーむ☆ バグの原因をもっと調べるか☆」


00:58

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「次は 後手が 6六 に角を打つ場面なんだが☆」

201509020058

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なぜか 後手が 先手の駒を動かそうとしているし☆」

201509020100

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「打ち込んだ 角 は、 馬 になっているぜ☆」

201509020101

 

KIFUWARABE_80x100x8

「 『1手指す』 の動きを細かく見てみたいぜ☆

フォーム上にログ出力しようぜ☆」


01:26

201509020125

 

KIFUWARABE_80x100x8

「内部的には、駒台の上に 馬 が乗っているんじゃないか☆?

馬を表示できないから、角と表示されているだけで☆」

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うっ☆」


02:11

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「1手指すボタンを押すと……☆」

 

        /// <summary>
        /// [一手指す]ボタン。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSasu_Click(object sender, EventArgs e)
        {
            OwataMinister.LEARNER.Dlgt_OnLogWrote_or_Null = (string log)=>{
                    this.txtIttesasuLog.Text += log;
                };
            this.Learner.Ittesasu(
                this,
                OwataMinister.LEARNER
            );
            OwataMinister.LEARNER.Dlgt_OnLogWrote_or_Null = null;
        }

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『一手指す学習バージョン』が実行されて……☆」

 

        /// <summary>
        /// [一手指す]ボタン。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void Ittesasu(Uc_Main uc_Main, KwErrorHandler errH)
        {

            //
            // リストの頭1個を見たい。
            //
            if (uc_Main.LstSasite.Items.Count < 1)
            {
                goto gt_EndMethod;
            }

            // リストボックスの先頭から指し手をSFEN形式で1つ取得。
            SasiteListItemImpl item = (SasiteListItemImpl)uc_Main.LstSasite.Items[0];
            string sfen = item.Sfen;
            errH.Dlgt_OnLogWrote_or_Null("sfen="+sfen);

            //bool isHonshogi = true;
            //int tesumi_yomiGenTeban_forLog = this.Kifu.CountTesumi(this.Kifu.CurNode);// 0;//FIXME:暫定。読み進めている現在の手目
            ////
            //// sfenを字句解析
            ////
            //ShootingStarlightable nextTe;
            //string str1;
            //string str2;
            //string str3;
            //string str4;
            //string str5;
            //string rest;
            //KifuIO_MovesParsers.ParseSfen_FromText(
            //                sfen, out str1, out str2, out str3, out str4, out str5, out rest, this.Kifu, owata.Logger);
            //KifuIO_MovesExecuter.ExecuteSfenMoves_FromTextSub(
            //    isHonshogi,
            //    str1,  //123456789 か、 PLNSGKRB
            //    str2,  //abcdefghi か、 *
            //    str3,  //123456789
            //    str4,  //abcdefghi
            //    str5,  //+
            //    out nextTe,
            //    this.Kifu,
            //    "学習用SFENパース1",
            //    tesumi_yomiGenTeban_forLog,
            //    owata
            //    );

            //
            // 現局面の合法手は、既に読んであるとします。(棋譜ツリーのNextNodesが既に設定されていること)
            //

            //
            // 一手指したい。
            //
            //↓↓一手指し
            //bool isBack = false;

            //Finger out_figMovedKoma;
            //Finger out_figFoodKoma;
            //Node<ShootingStarlightable, KyokumenWrapper> out_newNode_OrNull;
            //KifuIO.Ittesasi(
            //    nextTe,
            //    this.Kifu,
            //    isBack,
            //    out out_figMovedKoma,
            //    out out_figFoodKoma,
            //    out out_newNode_OrNull,//変更した現局面が、ここに入る。
            //    owata
            //    );
        //↑↑一手指し

            //
            // 合法手の一覧は既に作成されているものとします。
            // 次の手に進みます。
            //
            this.Kifu.CurNode = this.Kifu.CurNode.GetNextNode(sfen);

            //
            // リストの頭1個を除外します。
            //
            uc_Main.LstSasite.Items.RemoveAt(0);

            //
            // 合法手のNextNodesを作成します。
            //
            this.CreateNextNodes_Gohosyu(uc_Main,errH);

            //
            // 局面の表示を更新します。
            //
            this.ShowKifuNaiyou(uc_Main, errH);

        gt_EndMethod:
            ;
        }

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「CreateNextNodes_Gohosyu( ) というのが、合法手局面を作ろうとして……☆」

 

        /// <summary>
        /// 合法手を一覧します。
        /// </summary>
        /// <param name="uc_Main"></param>
        public void CreateNextNodes_Gohosyu(Uc_Main uc_Main, KwErrorHandler errH)
        {
            try
            {
                //
                // 指し手生成ルーチンで、棋譜ツリーを作ります。
                //
                bool isHonshogi = true;
                new Sasiteseisei_FukasaYusen_Routine().WAA_Yomu_Start(this.Kifu, isHonshogi, errH);
            }
            catch (Exception ex) { errH.DonimoNaranAkirameta(ex, "棋譜ツリーを作っていたときです。"); throw ex; }

        }

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「WAA_Yomu_Start( ) が実行される☆」

 

        /// <summary>
        /// 読む。
        /// 
        /// 棋譜ツリーを作成します。
        /// </summary>
        /// <param name="kifu">この棋譜ツリーの現局面に、次局面をぶら下げて行きます。</param>
        /// <param name="enableLog"></param>
        /// <param name="isHonshogi"></param>
        /// <param name="logTag"></param>
        /// <returns></returns>
        public void WAA_Yomu_Start(
            KifuTree kifu,
            bool isHonshogi,
            KwErrorHandler errH
            )
        {
            Sasiteseisei_Genjo genjo = this.CreateGenjo(kifu, isHonshogi, errH);
            genjo.Node_yomiNext = (KifuNode)kifu.CurNode;// このノードに、ツリーをぶら下げていきます。


            try
            {
                Sasiteseisei_FukasaYusen_Routine.WAAA_Yomu_Loop(genjo, errH);
            }
            catch (Exception ex)
            {
                //>>>>> エラーが起こりました。
                string message = ex.GetType().Name + " " + ex.Message + ":棋譜ツリーの読みの中盤50です。:";
                Debug.Fail(message);

                // どうにもできないので  ログだけ取って、上に投げます。
                errH.Logger.WriteLine_Error(message);
                throw ex;
            }

            try
            {
                if (0 < genjo.Args.LogF_moveKiki.boards.Count)//ログが残っているなら
                {
                    //
                    // ログの書き出し
                    //
                    Util_GraphicalLog.WriteHtml5(
                        true,//enableLog,
                        "SasiteRoutine#Yomi_NextNodes(00)新ログ",
                        "[" + Util_GraphicalLog.BoardFileLog_ToJsonStr(genjo.Args.LogF_moveKiki) + "]"
                    );

                    // 書き出した分はクリアーします。
                    genjo.Args.LogF_moveKiki.boards.Clear();
                }
            }
            catch (Exception ex)
            {
                errH.DonimoNaranAkirameta(ex, "棋譜ツリーの読みの後半90です。"); throw ex;
            }

        }

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「この中では WAAA_Yomu_Loop( ) が実行され☆」

 

        /// <summary>
        /// 棋譜ツリーに、ノードを追加していきます。再帰します。
        /// </summary>
        /// <param name="node_yomiCur"></param>
        /// <param name="genjo"></param>
        /// <param name="isAiteban"></param>
        /// <param name="errH"></param>
        private static void WAAA_Yomu_Loop(
            Sasiteseisei_Genjo genjo,
            KwErrorHandler errH
            )
        {
            //
            // まず前提として、
            // 現手番の「被王手の局面」だけがピックアップされます。
            // これはつまり、次の局面がないときは、その枝は投了ということです。
            //

            KifuNode hub_NextNodes;
            try
            {
                // このハブ・ノード自身は空っぽで、ハブ・ノードの次ノードが、次局面のリストになっています。
                hub_NextNodes = Sasiteseisei_FukasaYusen_Routine.WAAAA_CreateNextNodes(
                    genjo,
                    errH);
            }
            catch (Exception ex)
            {
                errH.DonimoNaranAkirameta(ex, "棋譜ツリーの読みループの前半10です。");  throw ex;
            }

            try
            {
                //
                // (2)現在の局面に、読んだ局面を継ぎ足します。
                //
                genjo.Node_yomiNext.AppdendNextNodes(//現在ノード
                    hub_NextNodes);
            }
            catch (Exception ex)
            {
                errH.DonimoNaranAkirameta(ex, "棋譜ツリーの読みループの前半20です。"); throw ex;
            }


            try
            {
                Sasiteseisei_FukasaYusen_Routine.WAAAA_Create_NextBranch(genjo, hub_NextNodes, errH);
            }
            catch (Exception ex)
            {
                errH.DonimoNaranAkirameta(ex, "棋譜ツリーの読みループの後半70です。"); throw ex;
            }


            try
            {
                if (genjo.Node_yomiNext.IsLeaf)//現在ノード
                {
                }
                else
                {
                    // TODO: 葉ノードではない(次のノードがある)なら、次枝読みが終わったので、この中間ノードの局面データは使われませんので破棄します。
                    //node_yomiCur.Lock_Kyokumendata();
                }

            }
            catch (Exception ex)
            {
                errH.DonimoNaranAkirameta(ex, "棋譜ツリーの読みループの後半90です。"); throw ex;
            }

        }

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「WAAAA_CreateNextNodes( ) で次の局面を作ろうとし☆」

 

        /// <summary>
        /// まず前提として、
        /// 現手番の「被王手の局面」だけがピックアップされます。
        /// これはつまり、次の局面がないときは、その枝は投了ということです。
        /// </summary>
        /// <param name="enableLog"></param>
        /// <param name="isHonshogi"></param>
        /// <param name="yomuDeep"></param>
        /// <param name="tesumi_yomiCur"></param>
        /// <param name="pside_yomiCur"></param>
        /// <param name="node_yomiCur"></param>
        /// <param name="logF_moveKiki"></param>
        /// <param name="logTag"></param>
        /// <returns>複数のノードを持つハブ・ノード</returns>
        private static KifuNode WAAAA_CreateNextNodes(
            Sasiteseisei_Genjo genjo,
            KwErrorHandler owata
            )
        {
            // 利きから、被王手の局面を除いたハブノード
            // このハブ・ノード自身は空っぽで、ハブ・ノードの次ノードが、次局面のリストになっています。
            KifuNode hubNode;
            {

                // ①現手番の駒の移動可能場所_被王手含む


                MmGenjo_MovableMasuImpl mm_genjo = null;
                try
                {
                    mm_genjo = new MmGenjo_MovableMasuImpl(
                            genjo.Args.IsHonshogi,//本将棋か
                            genjo.Node_yomiNext.Value.ToKyokumenConst,//現在の局面  // FIXME:Lockすると、ここでヌルになる☆
                            genjo.Pside_teban,//手番
                            false//相手番か
                            );
                }
                catch (Exception ex)
                {
                    owata.DonimoNaranAkirameta(ex, "棋譜ツリーの読みループの作成次ノードの前半10です。"); throw ex;
                }

                MmLogGenjoImpl mm_log = null;
                KaisetuBoard logBrd_move1 = new KaisetuBoard();// 盤1個分のログの準備
                try
                {
                    mm_log = new MmLogGenjoImpl(
                            logBrd_move1,//ログ?
                            genjo.YomuDeep,//読みの深さ
                            genjo.Tesumi_yomiCur,//手済み
                            genjo.Node_yomiNext.Key,//指し手
                            owata//ログ
                        );
                }
                catch (Exception ex)
                {
                    owata.DonimoNaranAkirameta(ex, "棋譜ツリーの読みループの作成次ノードの前半20です。"); throw ex;
                }

                List_OneAndMulti<Finger, SySet<SyElement>> komaBETUSusumeruMasus;
                try
                {
                    Util_MovableMove2.LA_Get_KomaBETUSusumeruMasus(
                        out komaBETUSusumeruMasus,//進めるマス
                        mm_genjo,
                        mm_log
                    );
                }
                catch (Exception ex)
                {
                    owata.DonimoNaranAkirameta(ex, "棋譜ツリーの読みループの作成次ノードの前半30です。"); throw ex;
                }

                try
                {
                    Sasiteseisei_FukasaYusen_Routine.Log1(genjo, logBrd_move1);//ログ試し
                }
                catch (Exception ex)
                {
                    owata.DonimoNaranAkirameta(ex, "棋譜ツリーの読みループの作成次ノードの前半40です。"); throw ex;
                }


                // ②利きから、被王手の局面を除いたハブノード
                if (genjo.Args.IsHonshogi)
                {
                    try
                    {
                        Maps_OneAndMulti<Finger, ShootingStarlightable> komaBETUAllSasites = Converter04A.KomaBETUSusumeruMasus_ToKomaBETUAllSasites(komaBETUSusumeruMasus, genjo.Node_yomiNext);
                        Converter41.AssertNariSasite(komaBETUAllSasites, "#WAAAA_CreateNextNodes(1)");

                        // 本将棋の場合、王手されている局面は削除します。
                        hubNode = Util_LegalMove.LA_RemoveMate(
                            genjo.Args.IsHonshogi,
                            komaBETUAllSasites,
                            genjo.YomuDeep,
                            genjo.Tesumi_yomiCur,
                            genjo.Pside_teban,
                            genjo.Node_yomiNext,
                            genjo.Args.LogF_moveKiki,//利き用
                            "読みNextルーチン",
                            owata);
                    }
                    catch (Exception ex)
                    {
                        owata.DonimoNaranAkirameta(ex, "棋譜ツリーの読みループの作成次ノードの中盤50です。"); throw ex;
                    }

                    //
                    // 成りの指し手を追加します。
                    //
                    try
                    {
                        Converter87.AddNariSasite(genjo.Node_yomiNext, hubNode, owata);
                    }
                    catch (Exception ex)
                    {
                        owata.DonimoNaranAkirameta(ex, "王手局面除去後に成りの指し手を追加していた時です。"); throw ex;
                    }


                    Converter04A.AssertNariSasite(hubNode, "#WAAAA_CreateNextNodes(2)");//ここで消えていた☆
                }
                else
                {
                    try
                    {
                        //そのまま変換
                        Dictionary<ShootingStarlightable, KyokumenWrapper> ss = Converter87.KomabetuMasus_ToSasitebetuSky(
                            komaBETUSusumeruMasus,
                            genjo.Node_yomiNext.Value.ToKyokumenConst,
                            genjo.Pside_teban,
                            owata);
                        hubNode = Converter87.SasitebetuSky_ToHubNode(ss, Util_Sky050A.GetReverseTebanside(genjo.Pside_teban));
                    }
                    catch (Exception ex)
                    {
                        owata.DonimoNaranAkirameta(ex, "棋譜ツリーの読みループの作成次ノードの後半90です。"); throw ex;
                    }

                }
            }

            return hubNode;
        }

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「SasitebetuSky_ToHubNode( ) が、

どの駒がどのマスへ移動できる、という手の一覧を作るぜ☆」

 

        /// <summary>
        /// どの駒が、どのマスへ動ける、というリストを、ハブ・ノードへ変換します。
        /// </summary>
        /// <param name="sasitebetuSkys"></param>
        /// <param name="nextTebanside"></param>
        /// <returns></returns>
        public static KifuNode SasitebetuSky_ToHubNode(Dictionary<ShootingStarlightable, KyokumenWrapper> sasitebetuSkys, Playerside nextTebanside)
        {
            KifuNode hubNode = new KifuNodeImpl(null, null, Playerside.Empty);

            foreach (KeyValuePair<ShootingStarlightable, KyokumenWrapper> nextNode in sasitebetuSkys)
            {
                hubNode.Add_NextNode(
                    Util_Sky200.TranslateSasite_StarlightToText(nextNode.Key),
                    new KifuNodeImpl(nextNode.Key, nextNode.Value, nextTebanside)
                    );
            }

            return hubNode;
        }

 


02:27

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これを見ると、『一手指す』処理は行ってないんだぜ☆

どの駒が、どのマスへ動ける、というだけで☆」

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「必ず、次の式が無ければいけないんだが……☆」

 

一手指す( 現局面, 指し手) = 次局面

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『一手指す』ルーチンを呼んでないぜ☆」

 

KIFUWARABE_80x100x8

「指し手の符号さえ 将棋サーバーに送れば、

『一手指す』のは 将棋サーバー がやってくれるので、

一見 きふわらべ は動いているように見えるが、

最初の1手の合法手だけ うまく選んでいるだけで、

2手目以降は うまく指せてないんじゃないか☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「あうち☆!」


02:36

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Grayscale.P781_FeatureVectorLearn.L100_Learn.LearnerImpl.Ittesasu( ~)

メソッドの中では、『一手指す』ルーチンを呼び出さなければならないのに、

まだ書きかけだったのかなんだぜ☆」

 


きふわらべへの理解の深まり あり なんだぜ☆!

第3回電王トーナメントへ 微速微進、遅々前進なんだぜ☆!

 

はてなブックマーク - 【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(12) エントリーしたぜ☆ww
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

叡王戦8/18(火) 7段Bブロック準決・決勝 神崎健二7段、村山慈明7段、松尾歩7段、稲葉陽7段☆

KITASHIRAKAWA_Chiyuri_80x100x8_04_Aozame

「おっおっ☆! バイトで超忙しいので 記事はパスなんだぜ~☆

リンクだけ貼っておくんだぜ~☆!」


当日の対局のニコニコ公式将棋配信はこちら☆

【将棋】第1期叡王戦 七段予選 神崎・松尾・村山・稲葉
..


 

 

はてなブックマーク - 叡王戦8/18(火) 7段Bブロック準決・決勝 神崎健二7段、村山慈明7段、松尾歩7段、稲葉陽7段☆
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

叡王戦7/31(金) 棋士紹介☆ 7段Aブロック 平藤眞吾7段、豊川孝弘7段、飯塚祐紀7段、野月浩貴7段☆

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu
明日あしたは 叡王戦えいおうせん ニコ生配信なまはいしんなんだぜ☆ 登場とうじょうする棋士きしがどんな人物じんぶつなのかをインターネットで調しらべてみるぜ☆」

KIFUWARABE_80x100x8
「トナメのひょうはどうなってるんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_04_Aozame
「こんな感じになっているぜ……、あっ☆ ティロティロが負けてる☆!」

叡王戦 20150731_eiousen_joke1叡王戦  20150731_eiousen_joke2

 

第1回将棋叡王戦だいいっかいしょうぎえいおうせん (Eiousen 1st. Professional Shogi Tournament.)
http://www.eiou.jp/

 


 

当日の対局のニコニコ公式将棋配信はこちら☆

【将棋】第1期叡王戦 七段予選 平藤・豊川・飯塚・野月
..


 

棋士紹介きししょうかい(INTRODUCTION)

 

平藤眞吾ひらふじしんごだん (HIRAFUJI Shingo 7 dan)

[nicodo display=”player”]sm7662440[/nicodo]

KIFUWARABE_80x100x8
面白動画おもしろどうがかったので、対局たいきょくでもてみようぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu
後手番ごてばん平藤ひらふじだん、1手損角替てぞんかくがわりからの端歩突はしふづきか☆

相手あいて出方でかたうかがっているんだな☆ オールラウンダーだからな☆」


 

豊川孝弘とよかわたかひろだん (TOYOKAWA Takahiro 7 dan)

[nicodo display=”player”]sm23361245[/nicodo]

KIFUWARABE_80x100x8
「マンモスだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu
「いつも飛び出と だしているのは、おやじギャグ というのかなんだぜ☆ww」


 

飯塚祐紀いいづかひろきだん (IIDUKA Hiroki 7 dan)

[nicodo display=”player”]sm22347245[/nicodo]

KIFUWARABE_80x100x8
「うそ矢倉許やぐらゆるすまじ☆wwww」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu
角打かくうちのすじを作って、てきこまはなれさせて 両取りょうどりにするといいのか☆」

 


 

野月浩貴のづきひろたかだん (NODUKI Hirotaka 7 dan)

[nicodo display=”player”]sm21611106[/nicodo]
KIFUWARABE_80x100x8
小学生名人戦しょうがくせいめいじんせんでもようぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu
「もう何段なんだんとかだったりするんだろ☆ww?」

 

はてなブックマーク - 叡王戦7/31(金) 棋士紹介☆ 7段Aブロック 平藤眞吾7段、豊川孝弘7段、飯塚祐紀7段、野月浩貴7段☆
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

きふわらべ 実装図(1)

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu
「おっおっ☆ きふわらべ のソースを、
トップダウンに 説明せつめいしていくぜ☆」

KIFUWARABE_80x100x8
「よし☆」

 


きふわらべの開発環境は、Cドライブの直下に置く☆

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu
「きふわらべは、フォルダーを何階層なんかいそうって ログをすんだぜ☆
ファイルパスがながくなってこまるんだぜ☆

そこで、ファイルパスはみじかほうがいいんだぜ☆
マイドキュメントとかではなく、シードライブの直下ちょっかにフォルダーをつくるんだぜ☆」

 

201507240042

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu
「Cドライブの直下に、 Root_KifuWarabe というフォルダーをつくるんだぜ☆

このフォルダーのなかに、きふわらべ 関係かんけいのファイルは ぜ~んぶ ほうむんだぜ☆」

KIFUWARABE_80x100x8
「Root_KifuWarabe がながいんだぜ☆ ちぢめて RKW にしたらどうだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu
かりにくいんだぜ☆ Root_KifuWarabe の15文字もじは、これ以上縮いじょうちぢめないぜ☆wwww」


ランタイムパッケージ、リリース部、ソース部

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu
「きふわらべのなかでは、C++シープラプラつくっているプログラムを利用りようしているところがあるんだぜ☆

そのプログラムが MSVCR110.dll というファイルをしがるんだが、
きふわらべを あなたのPCピーシーくばろうとおもっても、そのPCに MSVCR110.dll がはいっていないことがある☆

そこで、MSVCR110.dll をPCにれるプログラムが vcredist_x64.exe なんだが、7MBメガバイト とサイズがでかい☆ こんなのバックアップしてられない☆

そこで vcredist_x64.exe ファイルは、『VCビジュアルシー++プラプラ再配布可能さいはいふかのうランタイムパッケージ』というフォルダーにけて入れておいたんだぜ☆」

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu
つぎに 『buildsビルズ』 フォルダーなんだが、この中に 将棋しょうぎエンジンと、将棋エンジンが必要ひつようとする設定せっていファイルなどがはいっている。つまり、対局用たいきょくようのものが入っている☆

sourcesソースズ』フォルダーは、開発かいはつするときだけ必要になるファイルが入っている。

つまり、対局たいきょくするだけなら 『sources』 フォルダーはらない☆
対局目的たいきょくもくてきで きふわらべ をくばるときは 『sources』 フォルダーをはずしておくと、ファイルサイズがちいさくてむんだぜ☆

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu
「ツイッターで相談そうだんしながら フォルダー構成こうせいめたんだぜ☆
わりと無駄むだのないかたをしてるんじゃないか☆?」

KIFUWARABE_80x100x8
「3つのフォルダーのそとにも ファイルがはいっているみたいだが☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu
「わたしが 動作どうさテストと バックアップの作業さぎょうらくするために
いてるだけなんで、リリースするときははずすぜ☆」

はてなブックマーク - きふわらべ 実装図(1)
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

叡王戦7/16(木) 棋士紹介☆ 9段Cブロック 中村修9段、三浦弘行9段、桐山清澄9段、森けい二9段、佐藤康光9段☆

KITASHIRAKAWA_Chiyuri_80x100x8_03_Ahee
「もう叡王戦えいおうせんか☆! やることがおおくて いそがしすぎて、意識いしきびそうなんだぜ~☆!」

KIFUWARABE_80x100x8
「まだんでないな☆ 大丈夫だいじょうぶ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_03_Ahee
「……☆!」

叡王戦  20150716_eiousen_joke1

叡王戦  20150716_eiousen_joke2

 

第1回将棋叡王戦だいいっかいしょうぎえいおうせん (Eiousen 1st. Professional Shogi Tournament.)
http://www.eiou.jp/

 


 

当日の対局のニコニコ公式将棋配信はこちら☆

【将棋】第1期叡王戦 九段予選 桐山・森・中村・佐藤・三浦
..


 

棋士紹介きししょうかい(INTRODUCTION)

 

中村修なかむらおさむだん (NAKAMURA Osamu 9 dan)

続きを読む 叡王戦7/16(木) 棋士紹介☆ 9段Cブロック 中村修9段、三浦弘行9段、桐山清澄9段、森けい二9段、佐藤康光9段☆

はてなブックマーク - 叡王戦7/16(木) 棋士紹介☆ 9段Cブロック 中村修9段、三浦弘行9段、桐山清澄9段、森けい二9段、佐藤康光9段☆
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket