Advertisement
adfasdfadsfasdf

Untitled

Feb 26th, 2023
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.68 KB | None | 0 0
  1. // Only supports north and south
  2. template<Direction D>
  3. constexpr Bitboard fill(Bitboard b) {
  4.     switch (D) {
  5.         case NORTH:
  6.             b |= (b << 8);
  7.             b |= (b << 16);
  8.             return b | (b << 32);
  9.         case SOUTH:
  10.             b |= (b >> 8);
  11.             b |= (b >> 16);
  12.             return b | (b >> 32);
  13.         default: return b;
  14.     }
  15. }
  16.  
  17. template<Color color>
  18. inline constexpr Bitboard doubled_pawns(Position& board) {
  19.     Bitboard us_pawns = board.bitboard_of(color, PAWN);
  20.     return us_pawns & shift<relative_dir<color>(SOUTH)>(fill<relative_dir<color>(SOUTH)>(us_pawns));
  21. }
  22.  
  23. template<Color c>
  24. inline constexpr Score evaluate_doubled_pawns(Position& board) {
  25.     return DOUBLED_PAWN_PENALTY * pop_count(doubled_pawns<c>(board));
  26. }
  27.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement