From 39c01ce2cabdb60f251c3587615d4a54c7a69fac Mon Sep 17 00:00:00 2001 From: Fabian Fichter Date: Fri, 19 Feb 2021 17:20:04 +0100 Subject: [PATCH] Simplify fast attackers_to dobutsu STC LLR: -2.97 (-2.94,2.94) [0.00,10.00] Total: 12830 W: 4730 L: 4640 D: 3460 http://www.variantfishtest.org:6543/tests/view/602c34f06e23db669974e914 standard STC LLR: 3.01 (-2.94,2.94) [-10.00,5.00] Total: 5190 W: 1157 L: 1138 D: 2895 http://www.variantfishtest.org:6543/tests/view/602cc4366e23db669974e91c makruk STC LLR: 3.02 (-2.94,2.94) [-10.00,5.00] Total: 12761 W: 978 L: 966 D: 10817 http://www.variantfishtest.org:6543/tests/view/602d5ab46e23db669974e920 --- src/position.cpp | 11 +++++------ src/variant.h | 4 ++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/position.cpp b/src/position.cpp index 7145145..0b3d7bf 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -792,15 +792,14 @@ Bitboard Position::attackers_to(Square s, Bitboard occupied, Color c, Bitboard j // Use a faster version for variants with moderate rule variations if (var->fastAttacks) { - return (pawn_attacks_bb(~c, s) & pieces(c, PAWN)) + return (pawn_attacks_bb(~c, s) & pieces(c, PAWN, GOLD)) | (attacks_bb(s) & pieces(c, KNIGHT)) | (attacks_bb< ROOK>(s, occupied) & pieces(c, ROOK, QUEEN, DRAGON)) | (attacks_bb(s, occupied) & pieces(c, BISHOP, QUEEN, DRAGON_HORSE)) - | (attacks_bb(s) & pieces(c, KING, COMMONER, DRAGON_HORSE)) - | (attacks_bb(s) & pieces(c, FERS, DRAGON)) - | (LeaperAttacks[~c][SILVER][s] & pieces(c, SILVER)) - | (LeaperAttacks[~c][GOLD][s] & pieces(c, GOLD)) - | (LeaperAttacks[~c][SHOGI_PAWN][s]& pieces(c, SHOGI_PAWN)); + | (attacks_bb(s) & pieces(c, KING, COMMONER)) + | (attacks_bb(s) & pieces(c, FERS, DRAGON, SILVER)) + | (attacks_bb(s) & pieces(c, WAZIR, DRAGON_HORSE, GOLD)) + | (LeaperAttacks[~c][SHOGI_PAWN][s]& pieces(c, SHOGI_PAWN, SILVER)); } Bitboard b = 0; diff --git a/src/variant.h b/src/variant.h index 8cde421..c799eee 100644 --- a/src/variant.h +++ b/src/variant.h @@ -157,8 +157,8 @@ struct Variant { Variant* conclude() { fastAttacks = std::all_of(pieceTypes.begin(), pieceTypes.end(), [this](PieceType pt) { return ( pt < FAIRY_PIECES - || pt == COMMONER || pt == FERS || pt == SILVER - || pt == SHOGI_PAWN || pt == GOLD + || pt == COMMONER || pt == FERS || pt == WAZIR + || pt == SHOGI_PAWN || pt == GOLD || pt == SILVER || pt == DRAGON || pt == DRAGON_HORSE || (pt == KING && kingType == KING)) && !(mobilityRegion[WHITE][pt] || mobilityRegion[BLACK][pt]); -- 1.7.0.4