private static void Position(string[] tokens) { if (tokens[1].Equals("startpos")) { ChessBoardUtil.SetStartFen(_cb); DoMoves(tokens.Length == 2 // position startpos ? new string[] { } // position startpos moves f2f3 g1a3 ... : Arrays.CopyOfRange(tokens, 3, tokens.Length)); } else { // position fen 4k3/8/8/8/8/3K4 b kq - 0 1 moves f2f3 g1a3 ... var fen = tokens[2] + " " + tokens[3] + " " + tokens[4] + " " + tokens[5]; if (tokens.Length > 6) { fen += " " + tokens[6]; fen += " " + tokens[7]; } ChessBoardUtil.SetFen(fen, _cb); if (tokens.Length == 6 || tokens.Length == 7 || tokens.Length == 8) { // position fen 4k3/8/8/8/8/3K4 b kq - 0 1 DoMoves(new string[] { }); } else { // position fen 4k3/8/8/8/8/3K4 b kq - 0 1 moves f2f3 g1a3 ... DoMoves(Arrays.CopyOfRange(tokens, 9, tokens.Length)); } } ErrorLogger.StartFen = _cb.ToString(); TtUtil.HalfMoveCounter = _cb.MoveCounter; }
private static void TestPerft1() { Console.WriteLine(1); ChessBoardUtil.SetStartFen(Cb); Assert.IsTrue(20 == Qperft(Cb, 1)); }
public static void TestPerft8() { Console.WriteLine(8); ChessBoardUtil.SetStartFen(Cb); Assert.IsTrue(84998978956L == Qperft(Cb, 8)); }
private static void TestPerft7() { Console.WriteLine(7); ChessBoardUtil.SetStartFen(Cb); Assert.IsTrue(3195901860L == Qperft(Cb, 7)); }
private static void TestPerft6() { Console.WriteLine(6); ChessBoardUtil.SetStartFen(Cb); Assert.IsTrue(119060324 == Qperft(Cb, 6)); }
private static void TestPerft5() { Console.WriteLine(5); ChessBoardUtil.SetStartFen(Cb); Assert.IsTrue(4865609 == Qperft(Cb, 5)); }
private static void TestPerft4() { Console.WriteLine(4); ChessBoardUtil.SetStartFen(Cb); Assert.IsTrue(197281 == Qperft(Cb, 4)); }
private static void TestPerft3() { Console.WriteLine(3); ChessBoardUtil.SetStartFen(Cb); Assert.IsTrue(8902 == Qperft(Cb, 3)); }