1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-30 16:53:09 +00:00

Fun with lambdas

Use lambda functions instead of has_positive_value()
and toggle_case()

No functional change.
This commit is contained in:
Marco Costalba 2015-01-21 11:33:53 +01:00
parent f54c44e6be
commit 2ca2c3f35b
3 changed files with 4 additions and 11 deletions

View file

@ -49,10 +49,6 @@ namespace {
} }
} }
// Unary predicate used by std::partition to split positive values from remaining
// ones so as to sort the two sets separately, with the second sort delayed.
inline bool has_positive_value(const ExtMove& move) { return move.value > VALUE_ZERO; }
// Picks the best move in the range (begin, end) and moves it to the front. // Picks the best move in the range (begin, end) and moves it to the front.
// It's faster than sorting all the moves in advance when there are few // It's faster than sorting all the moves in advance when there are few
// moves e.g. possible captures. // moves e.g. possible captures.
@ -247,7 +243,7 @@ void MovePicker::generate_next_stage() {
case QUIETS_1_S1: case QUIETS_1_S1:
endQuiets = end = generate<QUIETS>(pos, moves); endQuiets = end = generate<QUIETS>(pos, moves);
score<QUIETS>(); score<QUIETS>();
end = std::partition(cur, end, has_positive_value); end = std::partition(cur, end, [](const ExtMove& m) { return m.value > VALUE_ZERO; });
insertion_sort(cur, end); insertion_sort(cur, end);
return; return;

View file

@ -1147,10 +1147,6 @@ bool Position::is_draw() const {
/// Position::flip() flips position with the white and black sides reversed. This /// Position::flip() flips position with the white and black sides reversed. This
/// is only useful for debugging e.g. for finding evaluation symmetry bugs. /// is only useful for debugging e.g. for finding evaluation symmetry bugs.
static char toggle_case(char c) {
return char(islower(c) ? toupper(c) : tolower(c));
}
void Position::flip() { void Position::flip() {
string f, token; string f, token;
@ -1168,7 +1164,8 @@ void Position::flip() {
ss >> token; // Castling availability ss >> token; // Castling availability
f += token + " "; f += token + " ";
std::transform(f.begin(), f.end(), f.begin(), toggle_case); std::transform(f.begin(), f.end(), f.begin(),
[](char c) { return char(islower(c) ? toupper(c) : tolower(c)); });
ss >> token; // En passant square ss >> token; // En passant square
f += (token == "-" ? token : token.replace(1, 1, token[1] == '3' ? "6" : "3")); f += (token == "-" ? token : token.replace(1, 1, token[1] == '3' ? "6" : "3"));

View file

@ -81,7 +81,7 @@ void init(OptionsMap& o) {
std::ostream& operator<<(std::ostream& os, const OptionsMap& om) { std::ostream& operator<<(std::ostream& os, const OptionsMap& om) {
for (size_t idx = 0; idx < om.size(); ++idx) for (size_t idx = 0; idx < om.size(); ++idx)
for (auto it : om) for (auto& it : om)
if (it.second.idx == idx) if (it.second.idx == idx)
{ {
const Option& o = it.second; const Option& o = it.second;