/// <summary> /// 項目Kの番号を、項目名に翻訳。 /// </summary> /// <param name="k"></param> /// <returns></returns> public static string K_To_Label(int k) { StringBuilder sb = new StringBuilder(); if (0 <= k && k < ConstShogi.BAN_SIZE) { sb.Append("("); sb.Append(k); sb.Append(")"); sb.Append(FeatureVectorImpl.Handle_To_Label(k)); } else//エラー { sb.Append("エラー_k=["); sb.Append(k); sb.Append("]"); } return(sb.ToString()); }
/// <summary> /// 項目Pの番号を、項目名に翻訳。 /// </summary> /// <param name="p"></param> /// <returns></returns> public static string P_To_Label(int p) { StringBuilder sb = new StringBuilder(); if (0 <= p && p < FeatureVectorImpl.CHOSA_KOMOKU_P) { sb.Append("("); sb.Append(p); sb.Append(")"); /// Pの1224種類の調査項目☆ /// (内訳 /// ※まず、先手の駒 /// 歩1~81・香1~81・桂1~81・銀1~81・金1~81・飛1~81・角1~81、 ※81マス上の自分の駒 /// 歩0~18・香0~4・桂0~4・銀0~4・金0~4・飛0~2・角0~2、 ※自分の持ち駒 /// /// ※次に、後手の駒 /// 歩1~81・香1~81・桂1~81・銀1~81・金1~81・飛1~81・角1~81、 ※81マス上の相手の駒 /// 歩0~18・香0~4・桂0~4・銀0~4・金0~4・飛0~2・角0~2、 ※相手の持ち駒 /// ) // 逆順に並べているので注意 if (Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.MotiKaku <= p)//角0~2 { sb.Append("敵持角"); sb.Append(p - Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.MotiKaku); } else if (Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.MotiHi__ <= p)//飛0~2 { sb.Append("敵持飛"); sb.Append(p - Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.MotiHi__); } else if (Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.MotiKin_ <= p)//金0~4 { sb.Append("敵持金"); sb.Append(p - Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.MotiKin_); } else if (Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.MotiGin_ <= p)//銀0~4 { sb.Append("敵持銀"); sb.Append(p - Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.MotiGin_); } else if (Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.MotiKei_ <= p)//桂0~4 { sb.Append("敵持桂"); sb.Append(p - Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.MotiKei_); } else if (Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.MotiKyo_ <= p)//香0~4 { sb.Append("敵持香"); sb.Append(p - Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.MotiKyo_); } else if (Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.MotiFu__ <= p)//歩0~18 { sb.Append("敵持歩"); sb.Append(p - Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.MotiFu__); } else if (Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.Ban_Kaku <= p)//角1~81 { sb.Append(FeatureVectorImpl.Handle_To_Label(p - Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.Ban_Kaku)); sb.Append("敵角"); } else if (Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.Ban_Hi__ <= p)//飛1~81 { sb.Append(FeatureVectorImpl.Handle_To_Label(p - Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.Ban_Hi__)); sb.Append("敵飛"); } else if (Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.Ban_Oh__ <= p)//玉1~81 { sb.Append(FeatureVectorImpl.Handle_To_Label(p - Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.Ban_Oh__)); sb.Append("敵王"); } else if (Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.Ban_Kin_ <= p)//金1~81 { sb.Append(FeatureVectorImpl.Handle_To_Label(p - Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.Ban_Kin_)); sb.Append("敵金"); } else if (Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.Ban_Gin_ <= p)//銀1~81 { sb.Append(FeatureVectorImpl.Handle_To_Label(p - Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.Ban_Gin_)); sb.Append("敵銀"); } else if (Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.Ban_Kei_ <= p)//桂1~81 { sb.Append(FeatureVectorImpl.Handle_To_Label(p - Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.Ban_Kei_)); sb.Append("敵桂"); } else if (Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.Ban_Kyo_ <= p)//香1~81 { sb.Append(FeatureVectorImpl.Handle_To_Label(p - Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.Ban_Kyo_)); sb.Append("敵香"); } else if (Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.Ban_Fu__ <= p)//歩1~81 { sb.Append(FeatureVectorImpl.Handle_To_Label(p - Const_NikomaKankeiP_ParamIx.PLAYER2 + Const_NikomaKankeiP_ParamIx.Ban_Fu__)); sb.Append("敵歩"); } else if (Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.MotiKaku <= p)//角0~2 { sb.Append("自持角"); sb.Append(p - Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.MotiKaku); } else if (Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.MotiHi__ <= p)//飛0~2 { sb.Append("自持飛"); sb.Append(p - Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.MotiHi__); } else if (Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.MotiKin_ <= p)//金0~4 { sb.Append("自持金"); sb.Append(p - Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.MotiKin_); } else if (Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.MotiGin_ <= p)//銀0~4 { sb.Append("自持銀"); sb.Append(p - Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.MotiGin_); } else if (Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.MotiKei_ <= p)//桂0~4 { sb.Append("自持桂"); sb.Append(p - Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.MotiKei_); } else if (Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.MotiKyo_ <= p)//香0~4 { sb.Append("自持香"); sb.Append(p - Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.MotiKyo_); } else if (Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.MotiFu__ <= p)//歩0~18 { sb.Append("自持歩"); sb.Append(p - Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.MotiFu__); } else if (Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.Ban_Kaku <= p)//角1~81 { sb.Append(FeatureVectorImpl.Handle_To_Label(p - Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.Ban_Kaku)); sb.Append("自角"); } else if (Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.Ban_Hi__ <= p)//飛1~81 { sb.Append(FeatureVectorImpl.Handle_To_Label(p - Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.Ban_Hi__)); sb.Append("自飛"); } else if (Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.Ban_Oh__ <= p)//玉1~81 { sb.Append(FeatureVectorImpl.Handle_To_Label(p - Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.Ban_Oh__)); sb.Append("自玉"); } else if (Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.Ban_Kin_ <= p)//金1~81 { sb.Append(FeatureVectorImpl.Handle_To_Label(p - Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.Ban_Kin_)); sb.Append("自金"); } else if (Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.Ban_Gin_ <= p)//銀1~81 { sb.Append(FeatureVectorImpl.Handle_To_Label(p - Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.Ban_Gin_)); sb.Append("自銀"); } else if (Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.Ban_Kei_ <= p)//桂1~81 { sb.Append(FeatureVectorImpl.Handle_To_Label(p - Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.Ban_Kei_)); sb.Append("自桂"); } else if (Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.Ban_Kyo_ <= p)//香1~81 { sb.Append(FeatureVectorImpl.Handle_To_Label(p - Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.Ban_Kyo_)); sb.Append("自香"); } else if (Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.Ban_Fu__ <= p)//歩1~81 { sb.Append(FeatureVectorImpl.Handle_To_Label(p - Const_NikomaKankeiP_ParamIx.PLAYER1 + Const_NikomaKankeiP_ParamIx.Ban_Fu__)); sb.Append("自歩"); } else// エラー { sb.Append("エラー_p=["); sb.Append(p); sb.Append("]"); } } else// エラー { sb.Append("エラー_p=["); sb.Append(p); sb.Append("]"); } return(sb.ToString()); }