public void SimplePerft_EndGameBoard(int depth, ulong expectedLeafsCount) { var boardState = FenToBoard.Parse("7r/8/2k3P1/1p1p2Kp/1P6/2P5/7r/Q7 w - - 0 1"); var result = SimplePerft.Run(boardState, depth); Assert.Equal(expectedLeafsCount, result.LeafsCount); }
public void SimplePerft_MidGameBoard(int depth, ulong expectedLeafsCount) { var boardState = FenToBoard.Parse("r2qr1k1/p2n1p2/1pb3pp/2ppN1P1/1R1PpP2/BQP1n1PB/P4N1P/1R4K1 w - - 0 21"); var result = SimplePerft.Run(boardState, depth); Assert.Equal(expectedLeafsCount, result.LeafsCount); }
public void SimplePerft_DefaultBoard(int depth, ulong expectedLeafsCount) { var boardState = new BoardState(); boardState.SetDefaultState(); var result = SimplePerft.Run(boardState, depth); Assert.Equal(expectedLeafsCount, result.LeafsCount); }
public void Run(params string[] parameters) { if (parameters.Length < 1 || !int.TryParse(parameters[0], out var depth)) { _interactiveConsole.WriteLine("No depth specified"); return; } var boardState = new BoardState(true); boardState.SetDefaultState(); for (var i = 0; i <= depth; i++) { var result = SimplePerft.Run(boardState, i); var megaLeafsPerSecond = result.LeafsPerSecond / 1_000_000; var nanosecondsPerLeaf = result.TimePerLeaf * 1_000_000_000; _interactiveConsole.WriteLine($"Depth {i} - Leafs: {result.LeafsCount} ({megaLeafsPerSecond:F} ML/s), " + $"Time: {result.Time:F} s, Time per leaf: {nanosecondsPerLeaf:F} ns"); } }