【将棋】きふわらべが頂上を目指す☆!第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
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

【将棋】きふわらべが頂上を目指す☆!第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
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

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

KITASHIRAKAWA_Chiyuri_80x100x8_04_Aozame

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

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


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

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


 

 

はてなブックマーク - 叡王戦8/18(火) 7段Bブロック準決・決勝 神崎健二7段、村山慈明7段、松尾歩7段、稲葉陽7段☆
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

叡王戦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段☆
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

きふわらべ 実装図(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)
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

叡王戦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段☆
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

[ボナンザ] GPW2006 発表資料を読んでみるんだぜ☆

//書きかけ

 

ボナンザメソッドを勉強するぜ☆!

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu
「ボナンザメソッドを勉強するぜ☆!」

KIFUWARABE_80x100x8
「うむ☆ やるんだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu
「発表資料は、ボナンザの開発者の 保木さんのページに置いてあるんだぜ☆」

『Bonanza – The Computer Shogi Program』
http://www.geocities.jp/bonanza_shogi/

このページの一番下のリンクが 発表資料なんだぜ☆

『GPW 2006 発表資料』
http://www.geocities.jp/bonanza_shogi/gpw2006.pdf

 


KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ほうーほ☆ この発表資料、ボナンザ Ver.2 のものなんだぜ☆ww

最近拾えるボナンザは Ver.6 なんだぜ☆wwww
もっと簡単になっているはずなんだぜ☆wwww

ちょっと 読み替えないといけないんだぜ☆wwww」

Wikipedia『Bonanza』
https://ja.wikipedia.org/wiki/Bonanza

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「全部で10ページ、20コマの短いドキュメントなので、

1コマずつ 読んでいくとするぜ☆」


 

[1コマ目] 何の発表なのかなんだぜ☆?

コマ01_1

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu
「まず最初に、 『最適制御さいてきせいぎょ』 というものがあることを
知ってないと 読めないんだぜ☆

ボナンザメソッドは、最適制御 ですよ、
と言っているんだぜ☆」

KIFUWARABE_80x100x8
「最適制御を 3行で 説明してくれ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_03_Ahee
「お手玉をしていた ピエロのおっさんが、
あらぬ方向に 玉を投げてしまったので、
後ろの池に ボチャン してしまった☆」

KIFUWARABE_80x100x8
「うむ☆ 分からないぜ☆」

最適制御_01_1

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu
「図のように、ピエロのおっさんが 危ない足場で
お手玉をしていたとする☆」

KIFUWARABE_80x100x8
「誰か このおっさんを止めろ☆!」

 

 

はてなブックマーク - [ボナンザ] GPW2006 発表資料を読んでみるんだぜ☆
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

叡王戦7/2(木) 棋士紹介と戦型予想☆ 9段Eブロック 田中魁秀9段、高橋道雄9段、福崎文吾9段、青野照一9段☆

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu明日あしたは 叡王戦えいおうせんの 9段Eだんイーブロック なんだぜ☆」

KIFUWARABE_80x100x8「1時間じかん30分後ぷんごには明日あしたになってしまう☆ あしいてくれ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_03_Ahee「……☆!」

叡王戦  20150630_eiousen_joke1

叡王戦 20150630_eiousen_joke2

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

 


 

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

【将棋】第1期叡王戦 九段予選 田中・青野・福崎・高橋
..


 

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

 

田中魁秀たなかかいしゅうだん (TANAKA Kaisyu 9 dan)

続きを読む 叡王戦7/2(木) 棋士紹介と戦型予想☆ 9段Eブロック 田中魁秀9段、高橋道雄9段、福崎文吾9段、青野照一9段☆

はてなブックマーク - 叡王戦7/2(木) 棋士紹介と戦型予想☆ 9段Eブロック 田中魁秀9段、高橋道雄9段、福崎文吾9段、青野照一9段☆
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

叡王戦6/30(火) 棋士紹介と戦型予想☆ 5段Aブロック 金井恒太5段、佐藤慎一5段、船江恒平5段、阿部光瑠5段☆

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu明日あしたは 叡王戦えいおうせんの 5段Aだんエーブロック なんだぜ☆」

叡王戦 20150629_eiousen_joke1叡王戦 20150629_eiousen_joke2

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

 


 

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

【将棋】第1期叡王戦 五段予選 金井・佐藤・船江・阿部
..


 

 

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

続きを読む 叡王戦6/30(火) 棋士紹介と戦型予想☆ 5段Aブロック 金井恒太5段、佐藤慎一5段、船江恒平5段、阿部光瑠5段☆

はてなブックマーク - 叡王戦6/30(火) 棋士紹介と戦型予想☆ 5段Aブロック 金井恒太5段、佐藤慎一5段、船江恒平5段、阿部光瑠5段☆
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

6/29 明日はニコ動で 叡王戦五段Aブロックが配信されるんだぜ☆その前にそれまでのまとめ☆

KITASHIRAKAWA_Chiyuri_80x100x8_03_Ahee「あへ~☆! 叡王戦えいおうせんがどんどんすすんでるんだぜ~☆! まとめなければ~☆」

\カタカタカタカタカタカタ/

6/20
    九F
        南芳一   ■ ・
        加藤一二三 ■ ・
        森下卓   ■ ・
        森内俊之  ■ ・

6/24
    五A
        島本亮   ・
        瀬川晶司  ・
        中尾敏之  ・
        田中悠一  ・

6/25
    五B
        伊藤真吾
        吉田正和
        高見泰地
        牧野光則

6/26
    八A
        富岡英作
        広瀬章人
    七A
        田村康介 ■
        豊島将之 ■
        中座真  ■

━━━━━━↑↑ここまで終わってるはず☆↑↑━━━━━━

6/30
    七B
        小林宏
        神崎健二
        杉本昌隆
    五A
        船江恒平 ■
        金井恒太 ■
        阿部光瑠 ■
        佐藤慎一 ■

7/1
    7A
        矢倉規広
        近藤正和
        佐々木慎
        高崎一生
    7B
        安用寺孝功
        高田尚平
        高野秀行
        松本佳介
    五A
        中村亮介
        村田顕弘
        山本真也

7/2
    九E
        田中魁秀 ■
        高橋道雄 ■
        福崎文吾 ■
        青野照市 ■
    八A
        鈴木大介
        中川大輔
    八B
        泉正樹
        東和男
    八C
        脇謙二
        神谷広志
    七B
        宮田敦史
        岡崎洋
        佐藤紳哉
        増田裕司

7/3
    七A
        室岡克彦
        小林裕士
        畠山成幸
        佐藤秀司
    五B
        阪口悟
        阿部健治郎
        西川和宏

7/13
    七B
        飯島栄治
        森信雄
        石川陽生
        村山慈明
    七B
        稲葉陽
        小倉久史
        西川慶二

7/14
    七B
        川上猛
        勝又清和
        中村太地
        横山泰明

7/15
    七A
        所司和晴
        中田功
        北島忠雄
        畠山鎮
    七B
        藤倉勇樹
        上野裕和
        長岡裕也
        佐々木勇気

7/16
    九C
        中村修
        三浦弘行
        桐山清澄
        森けい二
        佐藤康光
    七A
        片上大輔
        佐藤和俊
        澤田真吾
        村中秀史
    七B
        及川拓馬
        木下浩一
        千葉幸生
    四
        石田直裕
        梶浦宏孝
        星野良生
        上村亘

7/17
    九A
        井上慶太
        田丸昇
        塚田泰明
        田中寅彦
        丸山忠久
    四
        三枚堂達也
        青嶋未来
        竹内雄吾
        藤森哲也

(■印はニコ生配信のある人 ・印はこのブログでまとめた人)

 

KITASHIRAKAWA_Chiyuri_80x100x8_02_Hidosu「うわ☆ なに☆ この過密かみつスケジュール☆ おもにわたしの☆!」

KIFUWARABE_80x100x8はやくまとめてしまうんだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_02_Hidosu「『ひろし』という漢字かんじをたくさんんだがするぜ、バタリ(>_<)」

KIFUWARABE_80x100x8「おーい、まとめるんだぜー☆!」


 

KITASHIRAKAWA_Chiyuri_80x100x8_02_Hidosu

「まだ公表こうひょうされてないものはけないんだぜ☆!」

 

結果☆ (RESULT)
第一回叡王戦だいいっかいえいおうせん 2015/6/25(もく) 5段Bだんビーブロック (Done. 5-B block)

(1)

2015年6月25日 10:00〜

? 牧野光則まきのみつのり 5だん vs 高見泰地たかみたいち 5段 ?  ?  ? vs ?
(MAKINO Mitsunori VS TAKAMI Taichi  ? moves  Shogi Openings. ? VS ?)

棋譜きふ(Score Sheet) COMING SOON


 

(2)

2015年6月25日 10:00〜

? 伊藤真吾いとうしんご 5だん vs 吉田正和よしだまさかず 5段 ?  ?  ? vs ?
(ITO Shingo VS YOSHIDA Masakazu  ? moves  Shogi Openings. ? VS ?)

棋譜きふ(Score Sheet) COMING SOON


 

(3)

2015年6月25日 14:00〜

? ? 5だん vs ? 5段 ?  ?  ? vs ?
(? VS ?  ? moves  Shogi Openings. ? VS ?)

棋譜きふ(Score Sheet) COMING SOON


第一回叡王戦だいいっかいえいおうせん 2015/6/26(金) 8段Aだんエーブロック (Done. 8-A block)

(1)

2015年6月26日 14:00〜

? 富岡英作とみおかえいさく 8だん vs 広瀬章人ひろせあきひと 8段 ?  ?  ? vs ?
(TOMIOKA Eisaku VS HIROSE Akihito  ? moves  Shogi Openings. ? VS ?)

棋譜きふ(Score Sheet) COMING SOON


 

 

第一回叡王戦だいいっかいえいおうせん 2015/6/26(金) 7段Aだんエーブロック (Done. 7-A block)

(1)

2015年6月26日 14:00〜

○ 田村康介たむらこうすけ 7だん vs 豊島将之とよしままさゆき 7段 ●  ?  ? vs ?
(TAMURA Kousuke VS TOYOSHIMA Masayuki  ? moves  Shogi Openings. ? VS ?)

棋譜きふ(Score Sheet) COMING SOON

 


 

(2)

2015年6月26日 19:00〜

○ 中座真ちゅうざまこと 7だん vs 豊島将之とよしままさゆき 7段 ●  ?  ? vs ?
(TAMURA Kousuke VS TOYOSHIMA Masayuki  ? moves  Shogi Openings. ? VS ?)

棋譜きふ(Score Sheet) COMING SOON


 

 

//書きかけ

 

 


東方Projectとうほうプロジェクト上海シャンハイアリス幻楽団様げんがくだんさま著作物ちょさくぶつです。KITASHIRAKAWA_Chiyuri_80x100x8_01_Futuwwwww☆

はてなブックマーク - 6/29 明日はニコ動で 叡王戦五段Aブロックが配信されるんだぜ☆その前にそれまでのまとめ☆
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