Skip to content

Commit a61afc2

Browse files
authored
Simplify move hashing (#1064)
STC Elo | 1.09 +- 1.89 (95%) SPRT | 8.0+0.08s Threads=1 Hash=16MB LLR | 2.94 (-2.25, 2.89) [-2.75, 0.25] Games | N: 35534 W: 9127 L: 9016 D: 17391 Penta | [193, 4015, 9245, 4116, 198] https://recklesschess.space/test/15171/ No functional change. Bench: 3634130
1 parent 2141b88 commit a61afc2

2 files changed

Lines changed: 2 additions & 12 deletions

File tree

src/board.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,13 +200,15 @@ impl Board {
200200
self.mailbox[square] = piece;
201201
self.colors[piece.color()].set(square);
202202
self.pieces[piece.piece_type()].set(square);
203+
self.update_hash(piece, square);
203204
}
204205

205206
pub fn remove_piece(&mut self, square: Square) -> Piece {
206207
let piece = self.mailbox[square];
207208
self.mailbox[square] = Piece::None;
208209
self.colors[piece.color()].clear(square);
209210
self.pieces[piece.piece_type()].clear(square);
211+
self.update_hash(piece, square);
210212
piece
211213
}
212214

src/board/makemove.rs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,6 @@ impl Board {
5959

6060
self.add_piece(rook, rook_to);
6161
observer.on_piece_change(self, rook, rook_to, true);
62-
63-
self.update_hash(rook, rook_from);
64-
self.update_hash(rook, rook_to);
6562
} else if captured != Piece::None {
6663
self.remove_piece(from);
6764
observer.on_piece_change(self, piece, from, false);
@@ -70,8 +67,6 @@ impl Board {
7067
self.add_piece(piece, to);
7168
observer.on_piece_mutate(self, captured, piece, to);
7269

73-
self.update_hash(captured, to);
74-
7570
self.state.material -= captured.value();
7671
self.state.captured = Some(captured);
7772
} else {
@@ -82,7 +77,6 @@ impl Board {
8277
if mv.is_en_passant() {
8378
let captured = self.remove_piece(to ^ 8);
8479
observer.on_piece_change(self, captured, to ^ 8, false);
85-
self.update_hash(captured, to ^ 8);
8680
self.state.material -= captured.value();
8781
self.state.captured = Some(captured);
8882
} else if mv.is_double_push() {
@@ -91,19 +85,13 @@ impl Board {
9185
}
9286
}
9387

94-
self.update_hash(piece, from);
95-
self.update_hash(piece, to);
96-
9788
if mv.is_promotion() {
9889
let promotion = Piece::new(stm, mv.promo_piece_type());
9990

10091
self.remove_piece(to);
10192
self.add_piece(promotion, to);
10293
observer.on_piece_mutate(self, piece, promotion, to);
10394

104-
self.update_hash(piece, to);
105-
self.update_hash(promotion, to);
106-
10795
self.state.material += promotion.value() - PieceType::Pawn.value();
10896
}
10997

0 commit comments

Comments
 (0)