Пример #1
0
        public static string Dump_Elements(SySet <SyElement> sySet)
        {
            StringBuilder sb = new StringBuilder();

            foreach (SyElement syElement in sySet.Elements)
            {
                sb.Append(Conv_Sy.Query_Word(syElement.Bitfield));
                sb.Append(",");
            }

            return(sb.ToString());
        }
Пример #2
0
        public static New_Basho Query_Basho(ulong bitfield)
        {
            New_Basho basho;

            if (Masu_Honshogi.bitfieldBashoDictionary.ContainsKey(bitfield))
            {
                basho = Masu_Honshogi.bitfieldBashoDictionary[bitfield];
            }
            else
            {
                string word = $"升{BashoImpl.ToMasuNumber(bitfield)}";
                basho = new BashoImpl(bitfield);//TODO:唯一の新規生成にしたい。
                Masu_Honshogi.bitfieldBashoDictionary.Add(bitfield, basho);
                Conv_Sy.Put_BitfieldWord(bitfield, word);
            }

            return(basho);
        }
Пример #3
0
        /// <summary>
        /// 汎用。
        /// </summary>
        /// <param name="collection"></param>
        /// <returns></returns>
        public static string Dump(List_OneAndMulti <T1, T2> collection)
        {
            int count = 0;

            StringBuilder sb = new StringBuilder();

            {
                foreach (Couple <T1, T2> item in collection.Items)
                {
                    if (item.B is SySet <SyElement> )
                    {
                        foreach (SyElement syElement in ((SySet <SyElement>)item.B).Elements)
                        {
                            sb.AppendLine($"({ count }) a=[{ item.A.ToString() }] b=[{ Conv_Sy.Query_Word(syElement.Bitfield) }]");
                            count++;
                        }
                    }
                    else
                    {
                        sb.AppendLine($"({ count }) a=[{ item.A.ToString() }] b=[{ item.B.ToString() }]");
                        count++;
                    }
                }
            }

            return(sb.ToString());
        }
Пример #4
0
        static Michi187Array()
        {
            //----------
            // 筋187
            //----------
            Michi187Array.items = new List <SySet <SyElement> >();


            //----------------------------------------
            // kanjiToEnum
            //----------------------------------------
            // ファイルでの指定→ビットフィールド 変換用
            //
            // 将棋盤の81マスの符号だぜ☆ 0~80の、81個の連番を振っているぜ☆
            //
            // 再利用に利用。
            Conv_Sy.Put_WordBitfield("1一", Masu_Honshogi.nban11_1一 + 0);//1一
            Conv_Sy.Put_WordBitfield("1二", Masu_Honshogi.nban11_1一 + 1);
            Conv_Sy.Put_WordBitfield("1三", Masu_Honshogi.nban11_1一 + 2);
            Conv_Sy.Put_WordBitfield("1四", Masu_Honshogi.nban11_1一 + 3);
            Conv_Sy.Put_WordBitfield("1五", Masu_Honshogi.nban11_1一 + 4);
            Conv_Sy.Put_WordBitfield("1六", Masu_Honshogi.nban11_1一 + 5);
            Conv_Sy.Put_WordBitfield("1七", Masu_Honshogi.nban11_1一 + 6);
            Conv_Sy.Put_WordBitfield("1八", Masu_Honshogi.nban11_1一 + 7);
            Conv_Sy.Put_WordBitfield("1九", Masu_Honshogi.nban11_1一 + 8);
            Conv_Sy.Put_WordBitfield("2一", Masu_Honshogi.nban11_1一 + 9);
            Conv_Sy.Put_WordBitfield("2二", Masu_Honshogi.nban11_1一 + 10);
            Conv_Sy.Put_WordBitfield("2三", Masu_Honshogi.nban11_1一 + 11);
            Conv_Sy.Put_WordBitfield("2四", Masu_Honshogi.nban11_1一 + 12);
            Conv_Sy.Put_WordBitfield("2五", Masu_Honshogi.nban11_1一 + 13);
            Conv_Sy.Put_WordBitfield("2六", Masu_Honshogi.nban11_1一 + 14);
            Conv_Sy.Put_WordBitfield("2七", Masu_Honshogi.nban11_1一 + 15);
            Conv_Sy.Put_WordBitfield("2八", Masu_Honshogi.nban11_1一 + 16);
            Conv_Sy.Put_WordBitfield("2九", Masu_Honshogi.nban11_1一 + 17);
            Conv_Sy.Put_WordBitfield("3一", Masu_Honshogi.nban11_1一 + 18);
            Conv_Sy.Put_WordBitfield("3二", Masu_Honshogi.nban11_1一 + 19);
            Conv_Sy.Put_WordBitfield("3三", Masu_Honshogi.nban11_1一 + 20);
            Conv_Sy.Put_WordBitfield("3四", Masu_Honshogi.nban11_1一 + 21);
            Conv_Sy.Put_WordBitfield("3五", Masu_Honshogi.nban11_1一 + 22);
            Conv_Sy.Put_WordBitfield("3六", Masu_Honshogi.nban11_1一 + 23);
            Conv_Sy.Put_WordBitfield("3七", Masu_Honshogi.nban11_1一 + 24);
            Conv_Sy.Put_WordBitfield("3八", Masu_Honshogi.nban11_1一 + 25);
            Conv_Sy.Put_WordBitfield("3九", Masu_Honshogi.nban11_1一 + 26);
            Conv_Sy.Put_WordBitfield("4一", Masu_Honshogi.nban11_1一 + 27);
            Conv_Sy.Put_WordBitfield("4二", Masu_Honshogi.nban11_1一 + 28);
            Conv_Sy.Put_WordBitfield("4三", Masu_Honshogi.nban11_1一 + 29);
            Conv_Sy.Put_WordBitfield("4四", Masu_Honshogi.nban11_1一 + 30);
            Conv_Sy.Put_WordBitfield("4五", Masu_Honshogi.nban11_1一 + 31);
            Conv_Sy.Put_WordBitfield("4六", Masu_Honshogi.nban11_1一 + 32);
            Conv_Sy.Put_WordBitfield("4七", Masu_Honshogi.nban11_1一 + 33);
            Conv_Sy.Put_WordBitfield("4八", Masu_Honshogi.nban11_1一 + 34);
            Conv_Sy.Put_WordBitfield("4九", Masu_Honshogi.nban11_1一 + 35);
            Conv_Sy.Put_WordBitfield("5一", Masu_Honshogi.nban11_1一 + 36);
            Conv_Sy.Put_WordBitfield("5二", Masu_Honshogi.nban11_1一 + 37);
            Conv_Sy.Put_WordBitfield("5三", Masu_Honshogi.nban11_1一 + 38);
            Conv_Sy.Put_WordBitfield("5四", Masu_Honshogi.nban11_1一 + 39);
            Conv_Sy.Put_WordBitfield("5五", Masu_Honshogi.nban11_1一 + 40);
            Conv_Sy.Put_WordBitfield("5六", Masu_Honshogi.nban11_1一 + 41);
            Conv_Sy.Put_WordBitfield("5七", Masu_Honshogi.nban11_1一 + 42);
            Conv_Sy.Put_WordBitfield("5八", Masu_Honshogi.nban11_1一 + 43);
            Conv_Sy.Put_WordBitfield("5九", Masu_Honshogi.nban11_1一 + 44);
            Conv_Sy.Put_WordBitfield("6一", Masu_Honshogi.nban11_1一 + 45);
            Conv_Sy.Put_WordBitfield("6二", Masu_Honshogi.nban11_1一 + 46);
            Conv_Sy.Put_WordBitfield("6三", Masu_Honshogi.nban11_1一 + 47);
            Conv_Sy.Put_WordBitfield("6四", Masu_Honshogi.nban11_1一 + 48);
            Conv_Sy.Put_WordBitfield("6五", Masu_Honshogi.nban11_1一 + 49);
            Conv_Sy.Put_WordBitfield("6六", Masu_Honshogi.nban11_1一 + 50);
            Conv_Sy.Put_WordBitfield("6七", Masu_Honshogi.nban11_1一 + 51);
            Conv_Sy.Put_WordBitfield("6八", Masu_Honshogi.nban11_1一 + 52);
            Conv_Sy.Put_WordBitfield("6九", Masu_Honshogi.nban11_1一 + 53);
            Conv_Sy.Put_WordBitfield("7一", Masu_Honshogi.nban11_1一 + 54);
            Conv_Sy.Put_WordBitfield("7二", Masu_Honshogi.nban11_1一 + 55);
            Conv_Sy.Put_WordBitfield("7三", Masu_Honshogi.nban11_1一 + 56);
            Conv_Sy.Put_WordBitfield("7四", Masu_Honshogi.nban11_1一 + 57);
            Conv_Sy.Put_WordBitfield("7五", Masu_Honshogi.nban11_1一 + 58);
            Conv_Sy.Put_WordBitfield("7六", Masu_Honshogi.nban11_1一 + 59);
            Conv_Sy.Put_WordBitfield("7七", Masu_Honshogi.nban11_1一 + 60);
            Conv_Sy.Put_WordBitfield("7八", Masu_Honshogi.nban11_1一 + 61);
            Conv_Sy.Put_WordBitfield("7九", Masu_Honshogi.nban11_1一 + 62);
            Conv_Sy.Put_WordBitfield("8一", Masu_Honshogi.nban11_1一 + 63);
            Conv_Sy.Put_WordBitfield("8二", Masu_Honshogi.nban11_1一 + 64);
            Conv_Sy.Put_WordBitfield("8三", Masu_Honshogi.nban11_1一 + 65);
            Conv_Sy.Put_WordBitfield("8四", Masu_Honshogi.nban11_1一 + 66);
            Conv_Sy.Put_WordBitfield("8五", Masu_Honshogi.nban11_1一 + 67);
            Conv_Sy.Put_WordBitfield("8六", Masu_Honshogi.nban11_1一 + 68);
            Conv_Sy.Put_WordBitfield("8七", Masu_Honshogi.nban11_1一 + 69);
            Conv_Sy.Put_WordBitfield("8八", Masu_Honshogi.nban11_1一 + 70);
            Conv_Sy.Put_WordBitfield("8九", Masu_Honshogi.nban11_1一 + 71);
            Conv_Sy.Put_WordBitfield("9一", Masu_Honshogi.nban11_1一 + 72);
            Conv_Sy.Put_WordBitfield("9二", Masu_Honshogi.nban11_1一 + 73);
            Conv_Sy.Put_WordBitfield("9三", Masu_Honshogi.nban11_1一 + 74);
            Conv_Sy.Put_WordBitfield("9四", Masu_Honshogi.nban11_1一 + 75);
            Conv_Sy.Put_WordBitfield("9五", Masu_Honshogi.nban11_1一 + 76);
            Conv_Sy.Put_WordBitfield("9六", Masu_Honshogi.nban11_1一 + 77);
            Conv_Sy.Put_WordBitfield("9七", Masu_Honshogi.nban11_1一 + 78);
            Conv_Sy.Put_WordBitfield("9八", Masu_Honshogi.nban11_1一 + 79);
            Conv_Sy.Put_WordBitfield("9九", Masu_Honshogi.nban11_1一 + 80);
        }
Пример #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="filepath1"></param>
        /// <returns></returns>
        public static bool Load(string filepath1)
        {
            bool successful = false;

            string filepath2 = Path.Combine(Application.StartupPath, filepath1);


            List <List <string> > rows = null;

            if (!File.Exists(filepath2))
            {
                MessageBox.Show($"ファイルがありません。\nfilepath2=[{filepath2}]", "情報");
                rows = null;
                goto gt_EndMethod;
            }

            rows = Util_Csv.ReadCsv(filepath2);



            // 最初の1行は削除。
            rows.RemoveRange(0, 1);



            Michi187Array.Items.Clear();

            // 構文解析は大雑把です。
            // (1)空セルは無視します。
            // (2)「@DEFINE」セルが処理開始の合図です。
            // (3)次のセルには集合の名前です。「味方陣」「平野部」「敵陣」のいずれかです。
            // (4)次のセルは「=」です。
            // (5)次のセルは「{」です。
            // (6)次に「}」セルが出てくるまで、符号のセルが連続します。「1九」「1八」など。
            // (7)「}」セルで、@DEFINEの処理は終了です。
            foreach (List <string> row in rows)
            {
                // 2列目は、道名。
                SySet <SyElement> michi187  = new SySet_Ordered <SyElement>(row[1].Trim());
                SySet <SyElement> michiPart = null;

                // 各行の先頭1列目(連番)と2列目(道名)は削除。
                row.RemoveRange(0, 2);

                bool isPart_Define        = false; //@DEFINEパート
                bool isPart_Define_Member = false; //符号パート

                foreach (string cell1 in row)
                {
                    string cell = cell1.Trim();

                    if (cell == "")
                    {
                        goto gt_Next1;
                    }

                    if (isPart_Define)
                    {
                        if (cell == "=")
                        {
                            goto gt_Next1;
                        }

                        if (cell == "{")
                        {
                            isPart_Define_Member = true;
                            goto gt_Next1;
                        }

                        if (cell == "}")
                        {
                            isPart_Define_Member = false;
                            isPart_Define        = false;
                            goto gt_Next1;
                        }

                        if (isPart_Define_Member)
                        {
                            // 「1一」を「1」に変換します。
                            SyElement masu81 = Masu_Honshogi.Query_Basho(Conv_Sy.Query_Bitfield(cell));
                            michiPart.AddElement(masu81);
                        }
                        else
                        {
                            switch (cell)
                            {
                            case "味方陣": michiPart = new SySet_Ordered <SyElement>("味方陣"); michi187.AddSupersets(michiPart); goto gt_Next1;

                            case "平野部": michiPart = new SySet_Ordered <SyElement>("平野部"); michi187.AddSupersets(michiPart); goto gt_Next1;

                            case "敵陣": michiPart = new SySet_Ordered <SyElement>("敵陣"); michi187.AddSupersets(michiPart); goto gt_Next1;

                            default: throw new Exception($"未定義のキーワードです。[{cell}]");
                            }
                        }
                    }
                    else
                    {
                        if (cell == "@DEFINE")
                        {
                            isPart_Define = true;
                            goto gt_Next1;
                        }
                    }

gt_Next1:
                    ;
                }

                Michi187Array.Items.Add(michi187);
            }

            successful = true;

gt_EndMethod:
            return(successful);
        }
Пример #6
0
        /// <summary>
        /// 符号1「7g7f」を元に、move を作ります。
        ///
        /// <[再生]、[コマ送り]で呼び出されます>
        /// </summary>
        /// <returns></returns>
        public static void ToMove(
            bool isHonshogi,
            string str1,    //123456789 か、 PLNSGKRB
            string str2,    //abcdefghi か、 *
            string str3,    //123456789
            string str4,    //abcdefghi
            string strNari, //+
            out IMove move,
            KifuTree kifu,
            string hint
            )
        {
            move = Util_Sky258A.NullObjectMove;

            Node <IMove, KyokumenWrapper> siteiNode = kifu.CurNode;
            SkyConst src_Sky = siteiNode.Value.KyokumenConst;
            //kifu.AssertPside(kifu.CurNode, $"str1={str1}");
            Playerside pside1 = src_Sky.KaisiPside;

#if DEBUG
            Debug.Assert(!Conv_MasuHandle.OnKomabukuro(Conv_SyElement.ToMasuNumber(((RO_Star)src_Sky.StarlightIndexOf((Finger)0).Now).Masu)), $"[{src_Sky.Temezumi}]手目、駒が駒袋にあった。");
#endif

            PieceType uttaSyurui; // 打った駒の種類

            int srcSuji = Util_Koma.CTRL_NOTHING_PROPERTY_SUJI;
            int srcDan  = Util_Koma.CTRL_NOTHING_PROPERTY_DAN;

            if ("*" == str2)
            {
                //>>>>>>>>>> 「打」でした。

                Conv_String268.SfenUttaSyurui(str1, out uttaSyurui);
            }
            else
            {
                //>>>>>>>>>> 指しました。
                uttaSyurui = PieceType.None;//打った駒はない☆

                //------------------------------
                // 1
                //------------------------------
                if (!int.TryParse(str1, out srcSuji))
                {
                }

                //------------------------------
                // 2
                //------------------------------
                srcDan = Conv_Alphabet.ToInt(str2);
            }

            //------------------------------
            // 3
            //------------------------------
            int suji;
            if (!int.TryParse(str3, out suji))
            {
            }

            //------------------------------
            // 4
            //------------------------------
            int dan;
            dan = Conv_Alphabet.ToInt(str4);



            Finger koma;

            if ("*" == str2)
            {
                //>>>>> 「打」でした。

                // 駒台から、打った種類の駒を取得
                koma = Util_Sky_FingerQuery.InOkibaSyuruiNowIgnoreCase(
                    siteiNode.Value.KyokumenConst,
                    Conv_Playerside.ToKomadai(pside1),//FIXME:
                    uttaSyurui);
                if (Fingers.Error_1 == koma)
                {
                    throw new Exception($"TuginoItte_Sfen#GetData_FromTextSub:駒台から種類[{uttaSyurui}]の駒を掴もうとしましたが、エラーでした。");
                }


                //// FIXME: 打のとき、srcSuji、srcDan が Int.Min
            }
            else
            {
                //>>>>> 打ではないとき
                SyElement masu1  = Util_Masu10.OkibaSujiDanToMasu(Okiba.ShogiBan, srcSuji, srcDan);
                Fingers   komas1 = Util_Sky_FingersQuery.InMasuNow(//これが空っぽになるときがある。
                    src_Sky, masu1
                    );
                koma = komas1.ToFirst();

                if (Fingers.Error_1 == koma)
                {
                    //
                    // エラーの理由:
                    // 0手目、平手局面を想定していたが、駒がすべて駒袋に入っているときなど
                    //

                    var sky2 = Util_Sky307.Json_1Sky(src_Sky, "エラー駒になったとき",
                                                     $"{hint}_SF解3",
                                                     src_Sky.Temezumi);

                    string text2;
                    if (masu1 is New_Basho)
                    {
                        text2 = $@"masu1.masuNumber=[{((New_Basho)masu1).MasuNumber}]
komas1.Count=[{komas1.Count}]";
                    }
                    else
                    {
                        text2 = "masu1.masuNumber=New_Basho型じゃない。";
                    }

                    StringBuilder sb = new StringBuilder();
                    throw new Exception($@"TuginoItte_Sfen#GetData_FromTextSub:SFEN解析中の失敗:SFENでは [{srcSuji}]筋、[{srcDan}]段 にある駒を掴めと指示がありましたが、
将棋盤データの[{Conv_Sy.Query_Word(masu1.Bitfield)}]マスには、(駒が全て駒袋に入っているのか)駒がありませんでした。
hint=[{hint}]
{text2}
isHonshogi=[{isHonshogi}]
str1=[{str1}]
str2=[{str2}]
str3=[{str3}]
str4=[{str4}]
strNari=[{strNari}]
src_Sky.Temezumi=[{src_Sky.Temezumi}]
局面 = sfen {Util_StartposExporter.ToSfenstring(new StartposExporterImpl(src_Sky), true)}
{sky2}
");
                }
            }


            PieceType dstSyurui;
            PieceType srcSyurui;
            Okiba     srcOkiba;
            SyElement srcMasu;


            if ("*" == str2)
            {
                //>>>>> 打った駒の場合

                dstSyurui = uttaSyurui;
                srcSyurui = uttaSyurui;
                switch (pside1)
                {
                case Playerside.P2:
                    srcOkiba = Okiba.Gote_Komadai;
                    break;

                case Playerside.P1:
                    srcOkiba = Okiba.Sente_Komadai;
                    break;

                default:
                    srcOkiba = Okiba.Empty;
                    break;
                }


                Finger srcKoma = Util_Sky_FingerQuery.InOkibaSyuruiNowIgnoreCase(siteiNode.Value.KyokumenConst, srcOkiba, srcSyurui);

                RO_Star dstKoma = Util_Starlightable.AsKoma(src_Sky.StarlightIndexOf(srcKoma).Now);

                srcMasu = dstKoma.Masu;
            }
            else
            {
                //>>>>> 盤上の駒を指した場合

                RO_Star dstKoma = Util_Starlightable.AsKoma(src_Sky.StarlightIndexOf(koma).Now);


                dstSyurui = Util_Komahaiyaku184.Syurui(dstKoma.Haiyaku);
                srcSyurui = dstSyurui; //駒は「元・種類」を記憶していませんので、「現・種類」を指定します。
                srcOkiba  = Okiba.ShogiBan;
                srcMasu   = Util_Masu10.OkibaSujiDanToMasu(srcOkiba, srcSuji, srcDan);
            }


            //------------------------------
            // 5
            //------------------------------
            if ("+" == strNari)
            {
                // 成りました
                dstSyurui = Util_Komasyurui14.NariCaseHandle[(int)dstSyurui];
            }


            //------------------------------
            // 結果
            //------------------------------
            // 棋譜
            move = new RO_Starbeam(
                //koma,//TODO:

                new RO_Star(
                    pside1,
                    srcMasu,//FIXME:升ハンドルにしたい
                    srcSyurui
                    ),

                new RO_Star(
                    pside1,
                    Util_Masu10.OkibaSujiDanToMasu(Okiba.ShogiBan, suji, dan),//符号は将棋盤の升目です。 FIXME:升ハンドルにしたい
                    dstSyurui
                    ),

                PieceType.None//符号からは、取った駒は分からない
                );
        }
Пример #7
0
        /// <summary>
        /// 作りかけ。
        /// </summary>
        /// <param name="filepath"></param>
        /// <param name="tedokuHistory"></param>
        public static void WriteLog(string filepath, TedokuHistory tedokuHistory)
        {
            StringBuilder sb = new StringBuilder();
            int           i;

            //
            // 歩
            //
            i = 0;
            foreach (List <SyElement> list in tedokuHistory.Fu___)
            {
                sb.Append("Fu___[");
                sb.Append(string.Format("{0,2:0}", i));
                sb.Append("] ");
                foreach (SyElement masu in list)
                {
                    sb.Append(Conv_Sy.Query_Word(masu.Bitfield));
                    sb.Append(",");
                }
                sb.AppendLine();
                i++;
            }

            //
            // 香
            //
            i = 0;
            foreach (List <SyElement> list in tedokuHistory.Kyo__)
            {
                sb.Append("Kyo__[");
                sb.Append(string.Format("{0,2:0}", i));
                sb.Append("] ");
                foreach (SyElement masu in list)
                {
                    sb.Append(Conv_Sy.Query_Word(masu.Bitfield));
                    sb.Append(",");
                }
                sb.AppendLine();
                i++;
            }

            //
            // 桂
            //
            i = 0;
            foreach (List <SyElement> list in tedokuHistory.Kei__)
            {
                sb.Append("Kei__[");
                sb.Append(string.Format("{0,2:0}", i));
                sb.Append("] ");
                foreach (SyElement masu in list)
                {
                    sb.Append(Conv_Sy.Query_Word(masu.Bitfield));
                    sb.Append(",");
                }
                sb.AppendLine();
                i++;
            }


            //
            // 銀
            //
            i = 0;
            foreach (List <SyElement> list in tedokuHistory.Gin__)
            {
                sb.Append("Gin__[");
                sb.Append(string.Format("{0,2:0}", i));
                sb.Append("] ");
                foreach (SyElement masu in list)
                {
                    sb.Append(Conv_Sy.Query_Word(masu.Bitfield));
                    sb.Append(",");
                }
                sb.AppendLine();
                i++;
            }

            //
            // 金
            //
            i = 0;
            foreach (List <SyElement> list in tedokuHistory.Kin__)
            {
                sb.Append("Kin__[");
                sb.Append(string.Format("{0,2:0}", i));
                sb.Append("] ");
                foreach (SyElement masu in list)
                {
                    sb.Append(Conv_Sy.Query_Word(masu.Bitfield));
                    sb.Append(",");
                }
                sb.AppendLine();
                i++;
            }

            //
            // 玉
            //
            {
                sb.Append("Gyoku[--] ");
                foreach (SyElement masu in tedokuHistory.Gyoku)
                {
                    sb.Append(Conv_Sy.Query_Word(masu.Bitfield));
                    sb.Append(",");
                }
                sb.AppendLine();
            }

            //
            // 飛
            //
            i = 0;
            foreach (List <SyElement> list in tedokuHistory.Hisya)
            {
                sb.Append("Hisya[");
                sb.Append(string.Format("{0,2:0}", i));
                sb.Append("] ");
                foreach (SyElement masu in list)
                {
                    sb.Append(Conv_Sy.Query_Word(masu.Bitfield));
                    sb.Append(",");
                }
                sb.AppendLine();
                i++;
            }

            //
            // 角
            //
            i = 0;
            foreach (List <SyElement> list in tedokuHistory.Kaku_)
            {
                sb.Append("Kaku_[");
                sb.Append(string.Format("{0,2:0}", i));
                sb.Append("] ");
                foreach (SyElement masu in list)
                {
                    sb.Append(Conv_Sy.Query_Word(masu.Bitfield));
                    sb.Append(",");
                }
                sb.AppendLine();
                i++;
            }

#if DEBUG
            File.WriteAllText(filepath, sb.ToString());
#endif
        }