From 7548f3ec71eed0255034a69003eb6cbaf7f1645c Mon Sep 17 00:00:00 2001 From: stefiosif Date: Sun, 15 Mar 2026 15:21:05 +0200 Subject: [PATCH] Validate hash match in TT lookup Gain: 16.0 +/- 8.6, LOS: 100.0 % --- src/search/negamax.rs | 1 - src/search/transposition_table.rs | 12 ++++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/search/negamax.rs b/src/search/negamax.rs index 632ceff..4858795 100644 --- a/src/search/negamax.rs +++ b/src/search/negamax.rs @@ -49,7 +49,6 @@ pub fn negamax( if let Some(entry) = entry { if alpha == beta - 1 && plies > 0 - && entry.hash == game.hash && entry.depth >= depth && entry.node_type.cutoff_eligible(entry.score, alpha, beta) { diff --git a/src/search/transposition_table.rs b/src/search/transposition_table.rs index 06642c9..903036f 100644 --- a/src/search/transposition_table.rs +++ b/src/search/transposition_table.rs @@ -24,9 +24,17 @@ impl TranspositionTable { } pub fn lookup(&self, zobrist_hash: ZobristHash) -> Option { - self.positions + let entry = self + .positions .get((zobrist_hash.0 & (self.size - 1)) as usize) - .and_then(|entry| *entry) + .and_then(|entry| *entry); + + if let Some(entry) = entry { + if entry.hash == zobrist_hash { + return Some(entry); + } + } + None } pub fn insert(&mut self, entry: TTEntry) {