From 4a8e1ce52cf8a3c9c21fd8658ce401388d1cacf1 Mon Sep 17 00:00:00 2001 From: Moritz Eigenauer Date: Mon, 17 Nov 2025 10:52:15 +0100 Subject: [PATCH] fix checkmate search --- progress_tracking/collect_benchmarks.py | 8 ++++---- progress_tracking/progress.xlsx | Bin 8995 -> 5520 bytes src/bin/suite.rs | 4 ++-- src/movegen/legal_check.rs | 6 +++++- src/search/alpha_beta.rs | 9 +++------ 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/progress_tracking/collect_benchmarks.py b/progress_tracking/collect_benchmarks.py index d88d129..020588e 100644 --- a/progress_tracking/collect_benchmarks.py +++ b/progress_tracking/collect_benchmarks.py @@ -9,9 +9,9 @@ from openpyxl.utils import get_column_letter # --- Configuration --- # Adjust these paths if your benchmark names are different! -PERFT_JSON_PATH = "C:/Users/Moritz/RustroverProjects/ChessEngine/target/criterion/standard_perft5/new/estimates.json" -EVAL_JSON_PATH = "C:/Users/Moritz/RustroverProjects/ChessEngine/target/criterion/standard_board_evaluation/new/estimates.json" -EXCEL_FILE = "C:/Users/Moritz/RustroverProjects/ChessEngine/progress_tracking/progress.xlsx" +PERFT_JSON_PATH = "target/criterion/standard_perft5/new/estimates.json" +EVAL_JSON_PATH = "target/criterion/standard_board_evaluation/new/estimates.json" +EXCEL_FILE = "progress_tracking/progress.xlsx" HEADERS = ["TIMESTAMP", "COMMIT", "MESSAGE", "PERFT (ms)", "EVAL (ps)", "SUITE (%)"] COLUMN_WIDTHS = { @@ -213,4 +213,4 @@ def main(): print(f" SUITE: {suite_score:.2f} %") if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/progress_tracking/progress.xlsx b/progress_tracking/progress.xlsx index abfbf9b8f116ee51c447d1c8f1dc20816f8f09b6..9cc82c6223dbfdeba6fbe0f22744fcc333a086c7 100644 GIT binary patch literal 5520 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 M6n{jrzY-AeKiz}Av;Y7A literal 8995 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 bFYrILQBej4e0KqWXW)-NxROVa{rL8O;9j4@ diff --git a/src/bin/suite.rs b/src/bin/suite.rs index 75cfa24..cd7e569 100644 --- a/src/bin/suite.rs +++ b/src/bin/suite.rs @@ -25,7 +25,7 @@ fn load_csv(path: &str) -> io::Result>> { fn main() { let mut total_tests: f32 = 0.0; let mut correct_tests: f32 = 0.0; - let sts = load_csv("C:/Users/Moritz/RustroverProjects/ChessEngine/src/bin/stockfish_testsuite.csv").unwrap(); + let sts = load_csv("src/bin/stockfish_testsuite.csv").unwrap(); let mut engine = Engine::new("Yakari".to_string(), "EiSiMo".to_string()); // Set the time limit to 1 second @@ -61,4 +61,4 @@ fn main() { } println!("{}", correct_tests / (total_tests / 100.0)); -} \ No newline at end of file +} diff --git a/src/movegen/legal_check.rs b/src/movegen/legal_check.rs index 0c276a2..bf32dbf 100644 --- a/src/movegen/legal_check.rs +++ b/src/movegen/legal_check.rs @@ -1,8 +1,12 @@ -// FILENAME: legal_check.rs use crate::board::{Board, Color, PieceType}; use crate::movegen::tables::{get_bishop_attacks, get_rook_attacks, ATTACKING_PAWNS, KING_ATTACKS, KNIGHT_ATTACKS, MAGICS_BISHOP, MAGICS_ROOK, PREMASKS_BISHOP, PREMASKS_ROOK, RELEVANT_BITS_BISHOP, RELEVANT_BITS_ROOK}; use crate::square::{Square, SQUARES}; +pub fn is_current_king_attacked(board: &Board) -> bool { + let king = board.pieces[PieceType::King as usize][board.side_to_move as usize]; + is_square_attacked(board, SQUARES[king.trailing_zeros() as usize], board.side_to_move) +} + /// Checks if the king of the side that is NOT to move is in check pub fn is_other_king_attacked(board: &Board) -> bool { let king = board.pieces[PieceType::King as usize][!board.side_to_move as usize]; diff --git a/src/search/alpha_beta.rs b/src/search/alpha_beta.rs index a284833..ea9e69a 100644 --- a/src/search/alpha_beta.rs +++ b/src/search/alpha_beta.rs @@ -1,7 +1,7 @@ use crate::board::{Board, Color}; // <-- Assuming you have a Color enum (e.g., Color::White, Color::Black) use crate::eval::basic::evaluate_board; use crate::movegen::generate_pseudo_legal_moves; -use crate::movegen::legal_check::is_other_king_attacked; +use crate::movegen::legal_check::*; use crate::r#move::{Move, MoveList}; // A score high enough to be > any material eval, but low enough to not overflow when adding ply @@ -63,10 +63,7 @@ pub fn alpha_beta( } if !legal_moves_found { - if is_other_king_attacked(board) { - // Checkmate - // The score is *less* negative the *longer* it takes to be mated (higher ply) - // This translates to a *higher* score for the winner for a *faster* mate + if is_current_king_attacked(board) { return (None, -MATE_SCORE + (ply as i32)); } else { // Stalemate @@ -75,4 +72,4 @@ pub fn alpha_beta( } (best_move, best_score) -} \ No newline at end of file +}