My Project
mobility.h
Go to the documentation of this file.
1 /* mobility.h
2  */
3 
4 #ifndef EVAL_ML_MOBILITY_H
5 #define EVAL_ML_MOBILITY_H
6 
7 #include "osl/eval/weights.h"
8 #include "osl/eval/midgame.h"
9 #include "osl/numEffectState.h"
10 
11 namespace osl
12 {
13  namespace eval
14  {
15  namespace ml
16  {
18  {
19  friend class RookMobility;
20  friend class RookMobilityX;
21  friend class RookMobilityY;
22  friend class RookMobilitySum;
23  friend class RookMobilitySumKingX;
24  friend class RookMobilityXKingX;
25  public:
26  template<int Sign>
27  static void adjust(const NumEffectState&, bool promoted,
28  int vertical, int horizontal,
29  Square pos,
30  MultiInt& value);
31  static void eval(const NumEffectState&, MultiInt& out);
32  private:
33  static int indexX(Square rook, bool promoted,
34  int count, bool vertical)
35  {
36  const int x = (rook.x() > 5 ?
37  10 - rook.x() : rook.x());
38  return x - 1 + 5 * ((promoted ? 1 : 0) +
39  2 * ((vertical ? 1 : 0) + 2 * count));
40  }
41  template <int Sign>
42  static int indexY(Square rook, bool promoted,
43  int count, bool vertical)
44  {
45  const int y = (Sign > 0 ? rook.y() : 10 - rook.y());
46  return y - 1 + 9 * ((promoted ? 1 : 0) +
47  2 * ((vertical ? 1 : 0) + 2 * count));
48  }
49  template <int Sign>
50  static int indexXKingX(Square rook, Square king, int count, bool vertical)
51  {
52  const Square r = (Sign > 0) ? rook : rook.rotate180();
53  const Square k = (Sign > 0) ? king : king.rotate180();
54  const bool flip = r.x() > 5;
55  const int x = (flip ? 10 - r.x() : r.x());
56  const int king_x = (flip ? 10 - k.x() : k.x());
57  return king_x - 1 + 9 * (x - 1 + 5 * ((vertical ? 1 : 0) + 2 * count));
58  }
66  };
67 
69  {
70  public:
71  enum { DIM = 36 };
72  static void setUp(const Weights &weights,int stage);
73  };
74 
76  {
77  public:
78  enum { ONE_DIM = 34, DIM = ONE_DIM * EvalStages };
79  static void setUp(const Weights &weights);
80  };
82  {
83  public:
84  enum { ONE_DIM = 180, DIM = ONE_DIM * EvalStages };
85  static void setUp(const Weights &weights);
86  };
88  {
89  public:
90  enum { ONE_DIM = 324, DIM = ONE_DIM * EvalStages };
91  static void setUp(const Weights &weights);
92  };
94  {
95  public:
96  enum { ONE_DIM = 17 * 9, DIM = ONE_DIM * EvalStages };
97  static void setUp(const Weights &weights);
98  };
100  {
101  public:
102  enum { ONE_DIM = 9 * 2 * 5 * 9, DIM = ONE_DIM * EvalStages };
103  static void setUp(const Weights &weights);
104  };
105 
107  {
108  friend class BishopMobility;
109  friend class BishopMobilityEach;
110  public:
111  template<int Sign>
112  static void adjust(bool promoted, int mobility1, int mobility2,
113  MultiInt& value);
114  static void eval(const NumEffectState&, MultiInt& out);
115  private:
118  };
120  {
121  public:
122  enum { DIM = 36 };
123  static void setUp(const Weights &weights,int stage);
124  };
126  {
127  public:
128  enum { ONE_DIM = 18, DIM = ONE_DIM * EvalStages };
129  static void setUp(const Weights &weights);
130  };
132  {
133  template<int Sign>
134  static void adjust(int index, MultiInt& value);
135  static void eval(const NumEffectState&, MultiInt& out);
136  };
138  {
140  friend struct LanceMobilityAll;
141  public:
142  enum { DIM = 9 };
144  static void setUp(const Weights &weights,int stage);
145  };
146  }
147  }
148 }
149 #endif // EVAL_ML_MOBILITY_H
150 // ;;; Local Variables:
151 // ;;; mode:c++
152 // ;;; c-basic-offset:2
153 // ;;; End:
osl::eval::ml::RookMobilitySumKingX::DIM
@ DIM
Definition: mobility.h:96
osl::eval::ml::RookMobilityX::setUp
static void setUp(const Weights &weights)
Definition: mobility.cc:63
osl::Square
Definition: basic_type.h:532
osl::eval::ml::BishopMobilityAll::each_table
static CArray< MultiInt, 18 > each_table
Definition: mobility.h:117
osl::container::QuadInt
Definition: quadInt.h:43
osl::eval::ml::LanceMobility::lance_table
static CArray< MultiInt, 9 > lance_table
Definition: mobility.h:139
osl::eval::ml::RookMobilityAll::eval
static void eval(const NumEffectState &, MultiInt &out)
Definition: mobility.cc:145
osl::eval::ml::RookMobilityAll::sum_table
static CArray< MultiInt, 34 > sum_table
Definition: mobility.h:61
osl::eval::ml::RookMobilityXKingX
Definition: mobility.h:100
osl::eval::ml::RookMobilityX
Definition: mobility.h:82
osl::eval::ml::BishopMobilityEach::DIM
@ DIM
Definition: mobility.h:128
eval
weights.h
osl::eval::ml::BishopMobility::setUp
static void setUp(const Weights &weights, int stage)
Definition: mobility.cc:176
osl::eval::ml::RookMobilityXKingX::ONE_DIM
@ ONE_DIM
Definition: mobility.h:102
osl::eval::ml::RookMobilityAll::y_table
static CArray< MultiInt, 324 > y_table
Definition: mobility.h:63
osl::eval::ml::RookMobility
Definition: mobility.h:69
osl::eval::ml::RookMobilityY::setUp
static void setUp(const Weights &weights)
Definition: mobility.cc:73
osl::eval::ml::LanceMobility::DIM
@ DIM
Definition: mobility.h:142
osl::eval::ml::Weights
Definition: weights.h:18
osl::eval::ml::RookMobilitySum::ONE_DIM
@ ONE_DIM
Definition: mobility.h:78
osl::eval::ml::RookMobilityX::ONE_DIM
@ ONE_DIM
Definition: mobility.h:84
osl::eval::ml::RookMobilityAll::xkingx_table
static CArray< MultiInt, 9 *2 *5 *9 > xkingx_table
Definition: mobility.h:65
osl::eval::ml::BishopMobility::DIM
@ DIM
Definition: mobility.h:122
osl::eval::ml::LanceMobilityAll::eval
static void eval(const NumEffectState &, MultiInt &out)
Definition: mobility.cc:280
osl::eval::ml::BishopMobilityAll
Definition: mobility.h:107
osl::eval::ml::BishopMobilityAll::bishop_table
static CArray< MultiInt, 36 > bishop_table
Definition: mobility.h:116
osl::eval::ml::RookMobilityAll::rook_horizontal_table
static CArray< MultiInt, 18 > rook_horizontal_table
Definition: mobility.h:60
osl::eval::ml::RookMobilityX::DIM
@ DIM
Definition: mobility.h:84
midgame.h
osl::eval::ml::LanceMobility
Definition: mobility.h:138
osl::eval::ml::BishopMobilityAll::eval
static void eval(const NumEffectState &, MultiInt &out)
Definition: mobility.cc:225
osl::eval::ml::RookMobilityAll::adjust
static void adjust(const NumEffectState &, bool promoted, int vertical, int horizontal, Square pos, MultiInt &value)
Definition: mobility.cc:103
osl::eval::ml::RookMobilitySum::DIM
@ DIM
Definition: mobility.h:78
osl::eval::ml::RookMobilitySumKingX::ONE_DIM
@ ONE_DIM
Definition: mobility.h:96
osl::eval::ml::RookMobilityY::ONE_DIM
@ ONE_DIM
Definition: mobility.h:90
osl::eval::ml::RookMobilitySum
Definition: mobility.h:76
osl::eval::ml::BishopMobilityEach::ONE_DIM
@ ONE_DIM
Definition: mobility.h:128
osl::Square::x
int x() const
将棋としてのX座標を返す.
Definition: basic_type.h:563
osl::NumEffectState
利きを持つ局面
Definition: numEffectState.h:34
osl::eval::ml::RookMobilityAll::indexXKingX
static int indexXKingX(Square rook, Square king, int count, bool vertical)
Definition: mobility.h:50
osl::eval::ml::LanceMobilityAll::adjust
static void adjust(int index, MultiInt &value)
Definition: mobility.cc:271
osl::eval::ml::RookMobilityXKingX::setUp
static void setUp(const Weights &weights)
Definition: mobility.cc:83
osl::eval::ml::LanceMobilityAll
Definition: mobility.h:132
osl::Square::y
int y() const
将棋としてのY座標を返す.
Definition: basic_type.h:567
osl::eval::ml::RookMobilitySumKingX
Definition: mobility.h:94
osl::eval::ml::RookMobility::DIM
@ DIM
Definition: mobility.h:71
osl::eval::ml::RookMobilityAll
Definition: mobility.h:18
osl::eval::ml::LanceMobility::LanceMobility
LanceMobility()
Definition: mobility.h:143
osl::eval::ml::RookMobilityAll::indexY
static int indexY(Square rook, bool promoted, int count, bool vertical)
Definition: mobility.h:42
osl::eval::ml::RookMobilitySumKingX::setUp
static void setUp(const Weights &weights)
Definition: mobility.cc:92
osl::eval::ml::RookMobilityAll::indexX
static int indexX(Square rook, bool promoted, int count, bool vertical)
Definition: mobility.h:33
osl::eval::ml::RookMobilityY
Definition: mobility.h:88
osl::Square::rotate180
const Square rotate180() const
Definition: basic_type.h:613
osl::eval::ml::RookMobilityAll::rook_vertical_table
static CArray< MultiInt, 18 > rook_vertical_table
Definition: mobility.h:59
osl::eval::ml::BishopMobility
Definition: mobility.h:120
osl::eval::ml::BishopMobilityAll::adjust
static void adjust(bool promoted, int mobility1, int mobility2, MultiInt &value)
Definition: mobility.cc:200
numEffectState.h
osl::CArray
Definition: container.h:20
osl::eval::ml::RookMobilityAll::x_table
static CArray< MultiInt, 324 > x_table
Definition: mobility.h:62
osl::eval::ml::LanceMobility::setUp
static void setUp(const Weights &weights, int stage)
Definition: mobility.cc:261
osl::eval::ml::BishopMobilityEach
Definition: mobility.h:126
osl::eval::ml::RookMobilitySum::setUp
static void setUp(const Weights &weights)
Definition: mobility.cc:53
osl::eval::ml::BishopMobilityEach::setUp
static void setUp(const Weights &weights)
Definition: mobility.cc:189
osl::eval::ml::RookMobilityAll::sumkingx_table
static CArray< MultiInt, 17 *9 > sumkingx_table
Definition: mobility.h:64
osl
Definition: additionalEffect.h:6
osl::eval::ml::RookMobilityXKingX::DIM
@ DIM
Definition: mobility.h:102
osl::eval::ml::RookMobility::setUp
static void setUp(const Weights &weights, int stage)
Definition: mobility.cc:32
osl::eval::ml::RookMobilityY::DIM
@ DIM
Definition: mobility.h:90
osl::EvalStages
const int EvalStages
Definition: midgame.h:12