34 for (
size_t i = 0; i < 9; ++i)
38 for (
size_t i = 0; i < 9; ++i)
42 for (
size_t i = 0; i < 9; ++i)
46 for (
size_t i = 0; i < 9; ++i)
55 for (
size_t i = 0; i <
ONE_DIM; ++i)
65 for (
size_t i = 0; i <
ONE_DIM; ++i)
75 for (
size_t i = 0; i <
ONE_DIM; ++i)
85 for (
size_t i = 0; i <
ONE_DIM; ++i)
94 for (
size_t i = 0; i <
ONE_DIM; ++i)
101template <
int Sign>
inline
104 bool promoted,
int vertical,
int horizontal,
108 if(promoted) offset=9;
115 +
sumkingx_table[vertical + horizontal + 17*std::abs(king.
x()-position.
x())]
120 sum_table[vertical+horizontal+(promoted ? 17 : 0)] +
131 +
sumkingx_table[vertical + horizontal + 17*std::abs(king.
x()-position.
x())]
136 sum_table[vertical+horizontal+(promoted ? 17 : 0)] +
149 i < PtypeTraits<ROOK>::indexLimit;
178 for (
size_t i = 0; i < 18; ++i)
182 for (
size_t i = 0; i < 18; ++i)
191 for (
size_t i = 0; i <
ONE_DIM; ++i)
198template <
int Sign>
inline
229 i < PtypeTraits<BISHOP>::indexLimit;
237 const int mobility1 =
240 const int mobility2 =
247 const int mobility1 =
250 const int mobility2 =
263 for (
size_t i = 0; i < 9; ++i)
269template <
int Sign>
inline
284 i < PtypeTraits<LANCE>::indexLimit;
bool isPromoted() const
promoteした駒かどうかをチェックする
const Square square() const
bool pieceIsBlack() const
pieceであることが分かっている時に,更にBlackかどうかをチェックする.
bool isOnBoardNotPromoted() const
promoteしていないOnBoardの駒であることのチェック Lance位しか使い道がない?
const Piece pieceOf(int num) const
Square kingSquare() const
int x() const
将棋としてのX座標を返す.
static void setUp(const Weights &weights)
static void setUp(const Weights &weights, int stage)
static void setUp(const Weights &weights, int stage)
static CArray< MultiInt, 9 > lance_table
static CArray< MultiInt, 34 > sum_table
static int indexX(Square rook, bool promoted, int count, bool vertical)
static CArray< MultiInt, 18 > rook_vertical_table
static int indexXKingX(Square rook, Square king, int count, bool vertical)
static CArray< MultiInt, 324 > x_table
static int indexY(Square rook, bool promoted, int count, bool vertical)
static CArray< MultiInt, 324 > y_table
static void eval(const NumEffectState &, MultiInt &out)
static CArray< MultiInt, 17 *9 > sumkingx_table
static CArray< MultiInt, 18 > rook_horizontal_table
static CArray< MultiInt, 9 *2 *5 *9 > xkingx_table
static void adjust(const NumEffectState &, bool promoted, int vertical, int horizontal, Square pos, MultiInt &value)
static void setUp(const Weights &weights)
static void setUp(const Weights &weights)
static void setUp(const Weights &weights)
static void setUp(const Weights &weights)
static void setUp(const Weights &weights)
static void setUp(const Weights &weights, int stage)
static void adjust(bool promoted, int mobility1, int mobility2, MultiInt &value)
static CArray< MultiInt, 18 > each_table
static void eval(const NumEffectState &, MultiInt &out)
static CArray< MultiInt, 36 > bishop_table
static void adjust(int index, MultiInt &value)
static void eval(const NumEffectState &, MultiInt &out)
int value(size_t index) const
static int countAllDir(const NumEffectState &state, Piece p)
static int countAll(const NumEffectState &state, Square pos, int num)
縦方向,利きに関係なく動けるマスの数
static int countHorizontalAll(const NumEffectState &state, int num)
static int countVerticalAll(const NumEffectState &state, int num)
縦方向,利きに関係なく動けるマスの数