From a3b5a375d2a6d0808724da2c29a09844350bac32 Mon Sep 17 00:00:00 2001 From: Fabian Fichter Date: Sat, 4 Jul 2020 11:04:52 +0200 Subject: [PATCH] Extend definition of stable disks reversi LLR: 2.97 (-2.94,2.94) [0.00,10.00] Total: 422 W: 255 L: 150 D: 17 --- src/evaluate.cpp | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 22e6f6d..37a5038 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -1008,11 +1008,17 @@ namespace { // Potential piece flips if (pos.flip_enclosed_pieces()) { - // Stable - Bitboard corners = pos.pieces(Us) & (FileABB | file_bb(pos.max_file())) & (Rank1BB | rank_bb(pos.max_rank())); + // Stable pieces + Bitboard edges = (FileABB | file_bb(pos.max_file()) | Rank1BB | rank_bb(pos.max_rank())) & pos.board_bb(); + Bitboard edgePieces = pos.pieces(Us) & edges; Bitboard stable = 0; - while (corners) - stable |= attacks_bb(Us, ROOK, pop_lsb(&corners), ~pos.pieces(~Us)) & pos.pieces(Us); + while (edgePieces) + { + Square s = pop_lsb(&edgePieces); + Bitboard connectedEdge = attacks_bb(Us, ROOK, s, ~(pos.pieces() & edges)) & edges; + if (!(connectedEdge & ~pos.pieces()) || !more_than_one(connectedEdge & ~pos.pieces(Us))) + stable |= s; + } score += make_score(300, 300) * popcount(stable); // Unstable -- 1.7.0.4