From 3739e6e1699df8a1d0b60ad2e62439368da8cd67 Mon Sep 17 00:00:00 2001 From: stefiosif Date: Sun, 15 Sep 2024 20:27:48 +0300 Subject: [PATCH] Fix sigkill 9 running out of memory issue --- src/board/game.rs | 3 +-- src/search/perft.rs | 12 ++---------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/src/board/game.rs b/src/board/game.rs index d816daa..4e30f73 100644 --- a/src/board/game.rs +++ b/src/board/game.rs @@ -90,8 +90,7 @@ impl Game { pub fn unmake_move(&mut self) { let board = &mut self.board; - let move_parameters = - std::mem::take(&mut self.history.pop_move_parameters()).unwrap_or_default(); + let move_parameters = &mut self.history.pop_move_parameters().unwrap_or_default(); let color_before_move = board.state.change_side(); board.state.revert_full_move(color_before_move); board.state.en_passant_square = move_parameters.en_passant_square; diff --git a/src/search/perft.rs b/src/search/perft.rs index 529e6d6..87cd730 100644 --- a/src/search/perft.rs +++ b/src/search/perft.rs @@ -10,16 +10,15 @@ pub fn driver(game: &mut Game, nodes: &mut u64, depth: u8) { let pseudo_moves = game.board.pseudo_moves_all(); for mv in pseudo_moves { - let original_board = game.board.clone(); game.make_move(&mv); if game.board.king_under_check(color) { - game.board = original_board; + game.unmake_move(); continue; } driver(game, nodes, depth - 1); - game.board = original_board; + game.unmake_move(); } } @@ -74,7 +73,6 @@ mod tests { fn perft(fen: &str, depth: u8) -> Result { init_attacks(); - let mut game = from_fen(fen)?; let mut nodes = 0; driver(&mut game, &mut nodes, depth); @@ -85,7 +83,6 @@ mod tests { #[test] fn test_perft_1() -> Result<(), String> { init_attacks(); - assert_eq!(perft(FEN_PERFT[0], 5)?, 4865609); Ok(()) @@ -94,7 +91,6 @@ mod tests { #[test] fn test_perft_2() -> Result<(), String> { init_attacks(); - assert_eq!(perft(FEN_PERFT[1], 5)?, 193690690); Ok(()) @@ -103,7 +99,6 @@ mod tests { #[test] fn test_perft_3() -> Result<(), String> { init_attacks(); - assert_eq!(perft(FEN_PERFT[2], 5)?, 674624); Ok(()) @@ -112,7 +107,6 @@ mod tests { #[test] fn test_perft_4() -> Result<(), String> { init_attacks(); - assert_eq!(perft(FEN_PERFT[3], 5)?, 15833292); Ok(()) @@ -121,7 +115,6 @@ mod tests { #[test] fn test_perft_5() -> Result<(), String> { init_attacks(); - assert_eq!(perft(FEN_PERFT[4], 5)?, 89941194); Ok(()) @@ -130,7 +123,6 @@ mod tests { #[test] fn test_perft_6() -> Result<(), String> { init_attacks(); - assert_eq!(perft(FEN_PERFT[5], 5)?, 164075551); Ok(())