diff --git a/pleco/src/bots/iterative_parallel_mvv_lva.rs b/pleco/src/bots/iterative_parallel_mvv_lva.rs index 18a3a34..db0bc8a 100644 --- a/pleco/src/bots/iterative_parallel_mvv_lva.rs +++ b/pleco/src/bots/iterative_parallel_mvv_lva.rs @@ -35,7 +35,8 @@ pub fn iterative_deepening(board: &mut Board, max_depth: u16) -> BitMove { // clone the board let mut b = board.shallow_clone(); - let returned_b_move = jamboree(&mut b, alpha, beta, i, PLYS_SEQ[i as usize]); + let plys_idx = std::cmp::min(i as usize, PLYS_SEQ.len() - 1); + let returned_b_move = jamboree(&mut b, alpha, beta, i, PLYS_SEQ[plys_idx]); if i >= 2 { if returned_b_move.score > beta { beta = INF_V; diff --git a/pleco/src/bots/mod.rs b/pleco/src/bots/mod.rs index c2cddc9..55a1805 100644 --- a/pleco/src/bots/mod.rs +++ b/pleco/src/bots/mod.rs @@ -142,4 +142,11 @@ mod tests { JamboreeSearcher::best_move(b2, 5) ); } + + #[test] + fn iterative_searcher_depth_10() { + let b = Board::from_fen("1k6/R7/8/7B/7P/8/5Q2/B3K2R w K - 11 47").unwrap(); + // Should not panic with depth >= PLYS_SEQ length + let _best = IterativeSearcher::best_move(b, 10); + } }