KRPPKRP endgame: Simplify ugly switch statement
authorStefano80 <stefano.cardanobile@gmail.com>
Sat, 24 Oct 2015 22:12:59 +0000 (23:12 +0100)
committerJoona Kiiski <joona@zoox.com>
Sat, 24 Oct 2015 22:17:08 +0000 (23:17 +0100)
No functional change

Resolves #470

src/endgame.cpp

index 97e7e12ff4f9b93d4bdc5db5c6f282cea05666e5..ed6d48db13fcf1c6b5fc9b9af6aab626337f10e7 100644 (file)
@@ -59,6 +59,9 @@ namespace {
   const int PushClose[8] = { 0, 0, 100, 80, 60, 40, 20, 10 };
   const int PushAway [8] = { 0, 5, 20, 40, 60, 80, 90, 100 };
 
+  // Pawn Rank based scaling factors used in KRPPKRP endgame
+  const int KRPPKRPScaleFactors[RANK_NB] = {0, 9, 10, 14, 21, 44, 0, 0};
+
 #ifndef NDEBUG
   bool verify_material(const Position& pos, Color c, Value npm, int pawnsCnt) {
     return pos.non_pawn_material(c) == npm && pos.count<PAWN>(c) == pawnsCnt;
@@ -600,14 +603,8 @@ ScaleFactor Endgame<KRPPKRP>::operator()(const Position& pos) const {
       && distance<File>(bksq, wpsq2) <= 1
       && relative_rank(strongSide, bksq) > r)
   {
-      switch (r) {
-      case RANK_2: return ScaleFactor(9);
-      case RANK_3: return ScaleFactor(10);
-      case RANK_4: return ScaleFactor(14);
-      case RANK_5: return ScaleFactor(21);
-      case RANK_6: return ScaleFactor(44);
-      default: assert(false);
-      }
+      assert(r > RANK_1 && r < RANK_7);
+      return ScaleFactor(KRPPKRPScaleFactors[r]);
   }
   return SCALE_FACTOR_NONE;
 }