From 3c14407754195bedb461c531298bccfa1f9a373d Mon Sep 17 00:00:00 2001 From: "LAPTOP-G43MA5MO\\ekarni" Date: Sun, 27 Oct 2024 20:33:10 +0200 Subject: [PATCH] added hash --- chess/__init__.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/chess/__init__.py b/chess/__init__.py index 147f24be..163a1373 100644 --- a/chess/__init__.py +++ b/chess/__init__.py @@ -1584,6 +1584,8 @@ def restore(self, board: Board) -> None: board.halfmove_clock = self.halfmove_clock board.fullmove_number = self.fullmove_number +#from numba.experimental import jitclass +#@jitclass class Board(BaseBoard): """ A :class:`~chess.BaseBoard`, additional information representing @@ -3817,14 +3819,21 @@ def _repr_svg_(self) -> str: def __eq__(self, board: object) -> bool: if isinstance(board, Board): - return ( - self.halfmove_clock == board.halfmove_clock and - self.fullmove_number == board.fullmove_number and - type(self).uci_variant == type(board).uci_variant and - self._transposition_key() == board._transposition_key()) + return hash(self) == hash(board) + else: return NotImplemented + def __hash__(self) -> int: + return hash(( + self.pawns, self.knights, self.bishops, self.rooks, + self.queens, self.kings, + self.occupied_co[WHITE], self.occupied_co[BLACK], + self.turn, self.castling_rights, self.ep_square, + self.halfmove_clock, self.fullmove_number, + type(self).uci_variant, self.chess960 + )) + def apply_transform(self, f: Callable[[Bitboard], Bitboard]) -> None: super().apply_transform(f) self.clear_stack()