mirror of
https://github.com/sockspls/badfish
synced 2025-07-11 19:49:14 +00:00
Fix indentation in movepicker.cpp
Fix indentation in movepicker.cpp and evaluate.cpp. Also move the PickType enum out of global space. No functional change
This commit is contained in:
parent
a03e98dcd3
commit
280022baf7
3 changed files with 38 additions and 30 deletions
|
@ -412,7 +412,7 @@ namespace {
|
||||||
|
|
||||||
constexpr Color Them = (Us == WHITE ? BLACK : WHITE);
|
constexpr Color Them = (Us == WHITE ? BLACK : WHITE);
|
||||||
constexpr Bitboard Camp = (Us == WHITE ? AllSquares ^ Rank6BB ^ Rank7BB ^ Rank8BB
|
constexpr Bitboard Camp = (Us == WHITE ? AllSquares ^ Rank6BB ^ Rank7BB ^ Rank8BB
|
||||||
: AllSquares ^ Rank1BB ^ Rank2BB ^ Rank3BB);
|
: AllSquares ^ Rank1BB ^ Rank2BB ^ Rank3BB);
|
||||||
|
|
||||||
const Square ksq = pos.square<KING>(Us);
|
const Square ksq = pos.square<KING>(Us);
|
||||||
Bitboard weak, b, b1, b2, safe, unsafeChecks, pinned;
|
Bitboard weak, b, b1, b2, safe, unsafeChecks, pinned;
|
||||||
|
|
|
@ -31,7 +31,7 @@ namespace {
|
||||||
QSEARCH_TT, QCAPTURE_INIT, QCAPTURE, QCHECK_INIT, QCHECK
|
QSEARCH_TT, QCAPTURE_INIT, QCAPTURE, QCHECK_INIT, QCHECK
|
||||||
};
|
};
|
||||||
|
|
||||||
// Helper filter used with select_move()
|
// Helper filter used with select()
|
||||||
const auto Any = [](){ return true; };
|
const auto Any = [](){ return true; };
|
||||||
|
|
||||||
// partial_insertion_sort() sorts moves in descending order up to and including
|
// partial_insertion_sort() sorts moves in descending order up to and including
|
||||||
|
@ -62,7 +62,7 @@ namespace {
|
||||||
MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHistory* mh,
|
MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHistory* mh,
|
||||||
const CapturePieceToHistory* cph, const PieceToHistory** ch, Move cm, Move* killers)
|
const CapturePieceToHistory* cph, const PieceToHistory** ch, Move cm, Move* killers)
|
||||||
: pos(p), mainHistory(mh), captureHistory(cph), contHistory(ch),
|
: pos(p), mainHistory(mh), captureHistory(cph), contHistory(ch),
|
||||||
refutations{{killers[0], 0}, {killers[1], 0}, {cm, 0}}, depth(d){
|
refutations{{killers[0], 0}, {killers[1], 0}, {cm, 0}}, depth(d) {
|
||||||
|
|
||||||
assert(d > DEPTH_ZERO);
|
assert(d > DEPTH_ZERO);
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHist
|
||||||
stage += (ttMove == MOVE_NONE);
|
stage += (ttMove == MOVE_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// MovePicker constructor for ProbCut: we generate captures with SEE higher
|
/// MovePicker constructor for ProbCut: we generate captures with SEE greater
|
||||||
/// than or equal to the given threshold.
|
/// than or equal to the given threshold.
|
||||||
MovePicker::MovePicker(const Position& p, Move ttm, Value th, const CapturePieceToHistory* cph)
|
MovePicker::MovePicker(const Position& p, Move ttm, Value th, const CapturePieceToHistory* cph)
|
||||||
: pos(p), captureHistory(cph), threshold(th) {
|
: pos(p), captureHistory(cph), threshold(th) {
|
||||||
|
@ -129,14 +129,14 @@ void MovePicker::score() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// MovePicker::select_move() returns the next move satisfying a predicate function.
|
/// MovePicker::select() returns the next move satisfying a predicate function.
|
||||||
/// It never returns the TT move.
|
/// It never returns the TT move.
|
||||||
template<PickType T, typename Pred>
|
template<MovePicker::PickType T, typename Pred>
|
||||||
Move MovePicker::select_move(Pred filter) {
|
Move MovePicker::select(Pred filter) {
|
||||||
|
|
||||||
while (cur < endMoves)
|
while (cur < endMoves)
|
||||||
{
|
{
|
||||||
if (T == BEST_SCORE)
|
if (T == Best)
|
||||||
std::swap(*cur, *std::max_element(cur, endMoves));
|
std::swap(*cur, *std::max_element(cur, endMoves));
|
||||||
|
|
||||||
move = *cur++;
|
move = *cur++;
|
||||||
|
@ -165,20 +165,23 @@ top:
|
||||||
case CAPTURE_INIT:
|
case CAPTURE_INIT:
|
||||||
case PROBCUT_INIT:
|
case PROBCUT_INIT:
|
||||||
case QCAPTURE_INIT:
|
case QCAPTURE_INIT:
|
||||||
endBadCaptures = cur = moves;
|
cur = endBadCaptures = moves;
|
||||||
endMoves = generate<CAPTURES>(pos, cur);
|
endMoves = generate<CAPTURES>(pos, cur);
|
||||||
|
|
||||||
score<CAPTURES>();
|
score<CAPTURES>();
|
||||||
++stage;
|
++stage;
|
||||||
goto top;
|
goto top;
|
||||||
|
|
||||||
case GOOD_CAPTURE:
|
case GOOD_CAPTURE:
|
||||||
if (select_move<BEST_SCORE>([&](){ return pos.see_ge(move, Value(-55 * (cur-1)->value / 1024)) ?
|
if (select<Best>([&](){
|
||||||
// Move losing capture to endBadCaptures to be tried later
|
return pos.see_ge(move, Value(-55 * (cur-1)->value / 1024)) ?
|
||||||
true : (*endBadCaptures++ = move, false); }))
|
// Move losing capture to endBadCaptures to be tried later
|
||||||
|
true : (*endBadCaptures++ = move, false); }))
|
||||||
return move;
|
return move;
|
||||||
|
|
||||||
// Prepare the pointers to loop over the refutations array
|
// Prepare the pointers to loop over the refutations array
|
||||||
cur = std::begin(refutations), endMoves = std::end(refutations);
|
cur = std::begin(refutations);
|
||||||
|
endMoves = std::end(refutations);
|
||||||
|
|
||||||
// If the countermove is the same as a killer, skip it
|
// If the countermove is the same as a killer, skip it
|
||||||
if ( refutations[0].move == refutations[2].move
|
if ( refutations[0].move == refutations[2].move
|
||||||
|
@ -189,9 +192,9 @@ top:
|
||||||
/* fallthrough */
|
/* fallthrough */
|
||||||
|
|
||||||
case REFUTATION:
|
case REFUTATION:
|
||||||
if (select_move<NEXT>([&](){ return move != MOVE_NONE
|
if (select<Next>([&](){ return move != MOVE_NONE
|
||||||
&& !pos.capture(move)
|
&& !pos.capture(move)
|
||||||
&& pos.pseudo_legal(move); }))
|
&& pos.pseudo_legal(move); }))
|
||||||
return move;
|
return move;
|
||||||
++stage;
|
++stage;
|
||||||
/* fallthrough */
|
/* fallthrough */
|
||||||
|
@ -199,6 +202,7 @@ top:
|
||||||
case QUIET_INIT:
|
case QUIET_INIT:
|
||||||
cur = endBadCaptures;
|
cur = endBadCaptures;
|
||||||
endMoves = generate<QUIETS>(pos, cur);
|
endMoves = generate<QUIETS>(pos, cur);
|
||||||
|
|
||||||
score<QUIETS>();
|
score<QUIETS>();
|
||||||
partial_insertion_sort(cur, endMoves, -4000 * depth / ONE_PLY);
|
partial_insertion_sort(cur, endMoves, -4000 * depth / ONE_PLY);
|
||||||
++stage;
|
++stage;
|
||||||
|
@ -206,35 +210,38 @@ top:
|
||||||
|
|
||||||
case QUIET:
|
case QUIET:
|
||||||
if ( !skipQuiets
|
if ( !skipQuiets
|
||||||
&& select_move<NEXT>([&](){return move != refutations[0]
|
&& select<Next>([&](){return move != refutations[0]
|
||||||
&& move != refutations[1]
|
&& move != refutations[1]
|
||||||
&& move != refutations[2];}))
|
&& move != refutations[2];}))
|
||||||
return move;
|
return move;
|
||||||
|
|
||||||
// Prepare the pointers to loop over the bad captures
|
// Prepare the pointers to loop over the bad captures
|
||||||
cur = moves, endMoves = endBadCaptures;
|
cur = moves;
|
||||||
|
endMoves = endBadCaptures;
|
||||||
|
|
||||||
++stage;
|
++stage;
|
||||||
/* fallthrough */
|
/* fallthrough */
|
||||||
|
|
||||||
case BAD_CAPTURE:
|
case BAD_CAPTURE:
|
||||||
return select_move<NEXT>(Any);
|
return select<Next>(Any);
|
||||||
|
|
||||||
case EVASION_INIT:
|
case EVASION_INIT:
|
||||||
cur = moves;
|
cur = moves;
|
||||||
endMoves = generate<EVASIONS>(pos, cur);
|
endMoves = generate<EVASIONS>(pos, cur);
|
||||||
|
|
||||||
score<EVASIONS>();
|
score<EVASIONS>();
|
||||||
++stage;
|
++stage;
|
||||||
/* fallthrough */
|
/* fallthrough */
|
||||||
|
|
||||||
case EVASION:
|
case EVASION:
|
||||||
return select_move<BEST_SCORE>(Any);
|
return select<Best>(Any);
|
||||||
|
|
||||||
case PROBCUT:
|
case PROBCUT:
|
||||||
return select_move<BEST_SCORE>([&](){ return pos.see_ge(move, threshold); });
|
return select<Best>([&](){ return pos.see_ge(move, threshold); });
|
||||||
|
|
||||||
case QCAPTURE:
|
case QCAPTURE:
|
||||||
if (select_move<BEST_SCORE>([&](){ return depth > DEPTH_QS_RECAPTURES
|
if (select<Best>([&](){ return depth > DEPTH_QS_RECAPTURES
|
||||||
|| to_sq(move) == recaptureSquare; }))
|
|| to_sq(move) == recaptureSquare; }))
|
||||||
return move;
|
return move;
|
||||||
|
|
||||||
// If we did not find any move and we do not try checks, we have finished
|
// If we did not find any move and we do not try checks, we have finished
|
||||||
|
@ -247,11 +254,12 @@ top:
|
||||||
case QCHECK_INIT:
|
case QCHECK_INIT:
|
||||||
cur = moves;
|
cur = moves;
|
||||||
endMoves = generate<QUIET_CHECKS>(pos, cur);
|
endMoves = generate<QUIET_CHECKS>(pos, cur);
|
||||||
|
|
||||||
++stage;
|
++stage;
|
||||||
/* fallthrough */
|
/* fallthrough */
|
||||||
|
|
||||||
case QCHECK:
|
case QCHECK:
|
||||||
return select_move<NEXT>(Any);
|
return select<Next>(Any);
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(false);
|
assert(false);
|
||||||
|
|
|
@ -109,10 +109,10 @@ typedef Stats<PieceToHistory, W32, NOT_USED, PIECE_NB, SQUARE_NB> ContinuationHi
|
||||||
/// when MOVE_NONE is returned. In order to improve the efficiency of the alpha
|
/// when MOVE_NONE is returned. In order to improve the efficiency of the alpha
|
||||||
/// beta algorithm, MovePicker attempts to return the moves which are most likely
|
/// beta algorithm, MovePicker attempts to return the moves which are most likely
|
||||||
/// to get a cut-off first.
|
/// to get a cut-off first.
|
||||||
|
|
||||||
enum PickType { NEXT, BEST_SCORE };
|
|
||||||
|
|
||||||
class MovePicker {
|
class MovePicker {
|
||||||
|
|
||||||
|
enum PickType { Next, Best };
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MovePicker(const MovePicker&) = delete;
|
MovePicker(const MovePicker&) = delete;
|
||||||
MovePicker& operator=(const MovePicker&) = delete;
|
MovePicker& operator=(const MovePicker&) = delete;
|
||||||
|
@ -122,7 +122,7 @@ public:
|
||||||
Move next_move(bool skipQuiets = false);
|
Move next_move(bool skipQuiets = false);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
template<PickType T, typename Pred> Move select_move(Pred);
|
template<PickType T, typename Pred> Move select(Pred);
|
||||||
template<GenType> void score();
|
template<GenType> void score();
|
||||||
ExtMove* begin() { return cur; }
|
ExtMove* begin() { return cur; }
|
||||||
ExtMove* end() { return endMoves; }
|
ExtMove* end() { return endMoves; }
|
||||||
|
|
Loading…
Add table
Reference in a new issue