예제 #1
0
 public static string ToString(TtEntry ttEntry)
 {
     return("score=" + ttEntry.GetScore(0) + " " + new MoveWrapper(ttEntry.Move) + " depth=" +
            ttEntry.Depth + " flag="
            + ttEntry.Flag);
 }
예제 #2
0
        public static void TestTtValues(int score, int bestScore, int depth, int bestMove, int flag, TtEntry ttEntry,
                                        int ply)
        {
            if (ttEntry.Key == 0 || ttEntry.Depth != depth)
            {
                return;
            }
            score = ttEntry.GetScore(ply);
            if (ttEntry.Flag == TtUtil.FlagExact && flag == TtUtil.FlagExact)
            {
                if (score != bestScore)
                {
                    Console.WriteLine($"exact-exact: TT-score {score} != bestScore {bestScore}");
                }

                var move = ttEntry.Move;
                if (move != bestMove)
                {
                    throw new ArgumentException(
                              $"Error: TT-move {new MoveWrapper(move)} != bestMove {new MoveWrapper(bestMove)}");
                }
            }
            else if (ttEntry.Flag == TtUtil.FlagLower && flag == TtUtil.FlagExact)
            {
                if (score - Margin > bestScore)
                {
                    Console.WriteLine($"lower-exact: TT-score {score} > bestScore {bestScore}");
                }
            }
            else if (ttEntry.Flag == TtUtil.FlagUpper && flag == TtUtil.FlagExact)
            {
                if (score + Margin < bestScore)
                {
                    Console.WriteLine($"upper-exact: TT-score {score} < bestScore {bestScore}");
                }
            }
            else if (ttEntry.Flag == TtUtil.FlagExact && flag == TtUtil.FlagLower)
            {
                if (score + Margin < bestScore)
                {
                    Console.WriteLine($"exact-lower: TT-score {score} < bestScore {bestScore}");
                }
            }
            else if (ttEntry.Flag == TtUtil.FlagExact && flag == TtUtil.FlagUpper)
            {
                if (score - Margin > bestScore)
                {
                    Console.WriteLine($"exact-upper: TT-score {score} > bestScore {bestScore}");
                }
            }
            else if (ttEntry.Flag == TtUtil.FlagUpper && flag == TtUtil.FlagLower)
            {
                if (score + Margin < bestScore)
                {
                    Console.WriteLine($"upper-lower: TT-score {score} < bestScore {bestScore}");
                }
            }
            else if (ttEntry.Flag == TtUtil.FlagLower && flag == TtUtil.FlagUpper)
            {
                if (score - Margin > bestScore)
                {
                    Console.WriteLine($"lower-upper: TT-score {score} > bestScore {bestScore}");
                }
            }
        }