mirror of
https://github.com/sockspls/badfish
synced 2025-05-02 09:39:36 +00:00
Rewrite backward pawn detection
Use the new backmost_sq() instead of a loop. No functional change.
This commit is contained in:
parent
679c2ea227
commit
457ac26de5
1 changed files with 5 additions and 9 deletions
|
@ -140,16 +140,12 @@ namespace {
|
||||||
// We now know that there are no friendly pawns beside or behind this
|
// We now know that there are no friendly pawns beside or behind this
|
||||||
// pawn on adjacent files. We now check whether the pawn is
|
// pawn on adjacent files. We now check whether the pawn is
|
||||||
// backward by looking in the forward direction on the adjacent
|
// backward by looking in the forward direction on the adjacent
|
||||||
// files, and seeing whether we meet a friendly or an enemy pawn first.
|
// files, and picking the closest pawn there.
|
||||||
b = pos.attacks_from<PAWN>(s, Us);
|
b = pawn_attack_span(Us, s) & (ourPawns | theirPawns);
|
||||||
|
b = pawn_attack_span(Us, s) & rank_bb(backmost_sq(Us, b));
|
||||||
|
|
||||||
// Note that we are sure to find something because pawn is not passed
|
// If we have an enemy pawn in the same or next rank, the pawn is
|
||||||
// nor isolated, so loop is potentially infinite, but it isn't.
|
// backward because it cannot advance without being captured.
|
||||||
while (!(b & (ourPawns | theirPawns)))
|
|
||||||
b = shift_bb<Up>(b);
|
|
||||||
|
|
||||||
// The friendly pawn needs to be at least two ranks closer than the
|
|
||||||
// enemy pawn in order to help the potentially backward pawn advance.
|
|
||||||
backward = (b | shift_bb<Up>(b)) & theirPawns;
|
backward = (b | shift_bb<Up>(b)) & theirPawns;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue