majorPiece.h
Go to the documentation of this file.
/* majorPiece.h
*/
#ifndef EVAL_ML_MAJORPIECE_H
#define EVAL_ML_MAJORPIECE_H
#include "osl/eval/weights.h"
#include "osl/eval/midgame.h"
#include "osl/numEffectState.h"
#include <cstdlib>
namespace osl
{
namespace eval
{
namespace ml
{
template <bool Opening, Ptype MajorBasic>
class MajorY
{
private:
static CArray<int, 18> table;
static int index(Piece piece)
{
return ((piece.owner() == BLACK) ? (piece.square().y() - 1) :
(9 - piece.square().y())) + (piece.isPromoted() ? 9 : 0);
}
public:
enum { DIM = 18 };
static void setUp(const Weights &weights);
static int eval(const NumEffectState &state)
{
int value = 0;
for (int i = PtypeTraits<MajorBasic>::indexMin;
i < PtypeTraits<MajorBasic>::indexLimit;
++i)
{
const Piece piece = state.pieceOf(i);
if (piece.isOnBoard())
{
if (piece.owner() == BLACK)
value += table[index(piece)];
else
value -= table[index(piece)];
}
}
return value;
}
};
class RookYOpening : public MajorY<true, ROOK>
{
};
class RookYEnding : public MajorY<false, ROOK>
{
};
class BishopYOpening : public MajorY<true, BISHOP>
{
};
class BishopYEnding : public MajorY<false, BISHOP>
{
};
template <bool Opening>
class RookPawn
{
public:
enum { DIM = 1 };
static void setUp(const Weights &weights);
static int eval(const NumEffectState &state);
private:
static int weight;
};
class RookPawnOpening : public RookPawn<true>
{
};
class RookPawnEnding : public RookPawn<false>
{
};
class RookPawnY
{
friend class RookPawnYX;
public:
enum { ONE_DIM = 180, DIM = ONE_DIM * EvalStages };
static void setUp(const Weights &weights);
static MultiInt eval(const NumEffectState &state,
const CArray2d<int, 2, 9> &pawns);
private:
static int index(const Piece rook, const int pawn_y)
{
const int rook_y =
(rook.owner() == BLACK ? rook.square().y() : 10 - rook.square().y());
return (rook_y - 1) * 10 + pawn_y + (rook.isPromoted() ? 90 : 0);
}
static int indexY(const Square king,
const Piece rook, int pawn_y)
{
const int x_diff = std::abs(rook.square().x() - king.x());
const int rook_y =
(rook.owner() == BLACK ? rook.square().y() : 10 - rook.square().y());
return x_diff * 10 * 9 + (rook_y - 1) * 10 + pawn_y + (rook.isPromoted() ? 810 : 0);
}
static CArray<MultiInt, 180> table;
static CArray<MultiInt, 1620> y_attack_table;
static CArray<MultiInt, 1620> y_defense_table;
};
class RookPawnYX
{
public:
enum { ONE_DIM = 1620, DIM = ONE_DIM * 2*EvalStages };
static void setUp(const Weights &weights);
};
class AllMajor
{
public:
enum { DIM = 1 };
static void setUp(const Weights &weights,int stage);
static MultiInt eval(int black_major_count)
{
if (black_major_count == 4)
return weight;
else if (black_major_count == 0)
return -weight;
return MultiInt();
}
private:
static MultiInt weight;
};
template <bool Opening>
class MajorGoldSilverAttacked
{
public:
enum { DIM = 32 };
static void setUp(const Weights &weights);
static int eval(const NumEffectState &state);
static int index(const NumEffectState &state, Piece piece);
template <Ptype PTYPE>
static int evalOne(const NumEffectState &state);
private:
static CArray<int, 32> table;
};
class MajorGoldSilverAttackedOpening : public MajorGoldSilverAttacked<true>
{
};
class MajorGoldSilverAttackedEnding : public MajorGoldSilverAttacked<false>
{
};
class RookEffectBase
{
friend class RookEffectPiece;
public:
enum { ONE_DIM = 612, DIM = ONE_DIM * 2 };
static MultiInt eval(const NumEffectState &state);
protected:
template<Player P>
static MultiInt evalOne(const NumEffectState& state,
Square rook,
Square myKing,
Square opKing,
Square up,
Square dp,
Square rp,
Square lp,
bool isP);
static int index(int abs_x_diff, int y_diff, bool horizontal, bool is_promoted)
{
return y_diff + 8 + abs_x_diff * 17 + (horizontal ? 153 : 0) +
(is_promoted ? 306 : 0);
}
static int index0(int abs_x_diff,int y_diff,
PtypeO ptypeO,
bool horizontal, bool promoted){
return y_diff+8+abs_x_diff*17+(ptypeO - PTYPEO_MIN) * 17 * 9 +
(horizontal ? 4896 : 0) + (promoted ? 9792 : 0);
}
static int index1(Square king,Square from,PtypeO ptypeO,bool isP)
{
int y_diff=from.y()-king.y();
int x_diff=from.x()-king.x();
return index1(x_diff,y_diff,ptypeO,isP);
}
static int index1(int x_diff,int y_diff,PtypeO ptypeO,bool isP){
assert(-9 <= y_diff && y_diff <= 9);
assert(-9 <= x_diff && x_diff <= 9);
assert(getPtype((PtypeO)ptypeO)!=PTYPE_EMPTY);
int index=(ptypeO-PTYPEO_MIN)+32*((y_diff+9)+19*(x_diff+9+19*(isP ? 1 : 0)));
assert(0<=index && index<32*19*19*2);
return index;
}
static int index2(Square king,Square from,bool isP)
{
int y_diff=from.y()-king.y();
int x_diff=from.x()-king.x();
return index2(x_diff,y_diff,isP);
}
static int index2(int x_diff,int y_diff,bool isP){
assert(-9 <= y_diff && y_diff <= 9);
assert(-9 <= x_diff && x_diff <= 9);
int index=(y_diff+9)+19*(x_diff+9+19*(isP ? 1 : 0));
assert(0<=index && index<19*19*2);
return index;
}
static CArray<MultiInt, 612> attack_table;
static CArray<MultiInt, 612> defense_table;
static CArray<MultiInt, 32> piece_table;
static CArray<MultiInt, 23104> attack_u;
static CArray<MultiInt, 23104> attack_d;
static CArray<MultiInt, 23104> attack_l;
static CArray<MultiInt, 23104> attack_r;
static CArray<MultiInt, 23104> defense_u;
static CArray<MultiInt, 23104> defense_d;
static CArray<MultiInt, 23104> defense_l;
static CArray<MultiInt, 23104> defense_r;
static CArray<MultiInt, 722> attack_nospace;
static CArray<MultiInt, 722> defense_nospace;
};
class RookEffect : public RookEffectBase
{
public:
static void setUp(const Weights &weights,int stage);
};
class RookEffectPiece
{
public:
enum { DIM = 32 * EvalStages };
static void setUp(const Weights &weights);
};
class RookEffectPieceKingRelative : RookEffectBase
{
public:
enum { ONE_DIM = 19584, DIM = ONE_DIM * 2*EvalStages };
static void setUp(const Weights & weights);
};
class RookPromoteDefense : public RookEffectBase
{
friend class RookPromoteDefenseRookH;
public:
enum { ONE_DIM = 256, DIM = ONE_DIM * EvalStages };
static void setUp(const Weights &weights);
static MultiInt eval(const NumEffectState &state);
private:
static CArray<MultiInt, 256> promote_defense_table;
static CArray<MultiInt, 144> promote_defense_rook_table;
};
class RookPromoteDefenseRookH : public RookEffectBase
{
public:
enum { ONE_DIM = 144, DIM = ONE_DIM * EvalStages };
static void setUp(const Weights &weights);
private:
};
class BishopEffectBase
{
friend class BishopEffectPiece;
public:
enum { ONE_DIM = 612, DIM = ONE_DIM * 2 };
static MultiInt eval(const NumEffectState &state);
protected:
template<Player P>
static MultiInt evalOne(const NumEffectState& state,
Square bishop,
Square myKing,
Square opKing,
Square ulp,
Square urp,
Square dlp,
Square drp,
bool isP);
static int index(int x_diff, int y_diff, bool ur, bool promoted)
{
if (x_diff<0)
ur = !ur;
return y_diff + 8 + std::abs(x_diff) * 17 + (ur ? 153 : 0) + (promoted ? 306 : 0);
}
static int index0(int x_diff, int y_diff,PtypeO ptypeO,bool ur, bool promoted)
{
if (x_diff>0)
ur = !ur;
return -y_diff + 8 + std::abs(x_diff) * 17 + (ptypeO - PTYPEO_MIN) * 17 * 9 +
(ur ? 4896 : 0) + (promoted ? 9792 : 0);
}
static int index1(Square king,Square from,PtypeO ptypeO,bool isP)
{
int y_diff=from.y()-king.y();
int x_diff=from.x()-king.x();
return index1(x_diff,y_diff,ptypeO,isP);
}
static int index1(int x_diff,int y_diff,PtypeO ptypeO,bool isP){
assert(-9 <= y_diff && y_diff <= 9);
assert(-9 <= x_diff && x_diff <= 9);
assert(getPtype((PtypeO)ptypeO)!=PTYPE_EMPTY);
int index=(ptypeO-PTYPEO_MIN)+32*((y_diff+9)+19*(x_diff+9+19*(isP ? 1 : 0)));
assert(0<=index && index<32*19*19*2);
return index;
}
static int index2(Square king,Square from,bool isP)
{
int y_diff=from.y()-king.y();
int x_diff=from.x()-king.x();
return index2(x_diff,y_diff,isP);
}
static int index2(int x_diff,int y_diff,bool isP){
assert(-9 <= y_diff && y_diff <= 9);
assert(-9 <= x_diff && x_diff <= 9);
int index=(y_diff+9)+19*(x_diff+9+19*(isP ? 1 : 0));
assert(0<=index && index<19*19*2);
return index;
}
static CArray<MultiInt, 612> attack_table;
static CArray<MultiInt, 612> defense_table;
static CArray<MultiInt, 32> piece_table;
static CArray<MultiInt, 23104> attack_ur;
static CArray<MultiInt, 23104> attack_ul;
static CArray<MultiInt, 23104> attack_dr;
static CArray<MultiInt, 23104> attack_dl;
static CArray<MultiInt, 23104> defense_ur;
static CArray<MultiInt, 23104> defense_ul;
static CArray<MultiInt, 23104> defense_dr;
static CArray<MultiInt, 23104> defense_dl;
static CArray<MultiInt, 722> attack_nospace;
static CArray<MultiInt, 722> defense_nospace;
};
class BishopEffect : public BishopEffectBase
{
public:
static void setUp(const Weights &weights,int stage);
};
class BishopEffectPiece
{
public:
enum { DIM = 32*EvalStages };
static void setUp(const Weights &weights);
};
class BishopEffectPieceKingRelative : BishopEffectBase
{
public:
enum { ONE_DIM = 19584, DIM = ONE_DIM * 2*EvalStages };
static void setUp(const Weights & weights);
};
class BishopHead
{
friend class BishopHeadKingRelative;
friend class BishopHeadX;
public:
enum { ONE_DIM = 32, DIM = ONE_DIM * EvalStages };
static void setUp(const Weights &weights);
static MultiInt eval(const NumEffectState &state);
private:
static int indexK(Player player, PtypeO ptypeO, int x_diff, int y_diff)
{
if (player == WHITE)
{
ptypeO=(PtypeO)(static_cast<int>(ptypeO)^(~15));
}
if (player == WHITE)
{
y_diff = -y_diff;
}
return (ptypeOIndex(ptypeO) * 9 + x_diff) * 17 + y_diff + 8;
}
template <Player P>
static int indexX(PtypeO ptypeO, int x)
{
if (x > 5)
{
x = 10 - x;
}
if (P == WHITE)
{
ptypeO = altIfPiece(ptypeO);
}
return x - 1 + 5 * ptypeOIndex(ptypeO);
}
static CArray<MultiInt, 32> table;
static CArray<MultiInt, 4896> king_table;
static CArray<MultiInt, 160> x_table;
};
class BishopHeadKingRelative
{
public:
enum { ONE_DIM = 4896, DIM = ONE_DIM * EvalStages };
static void setUp(const Weights &weights);
};
class BishopHeadX
{
public:
enum { ONE_DIM = 160, DIM = ONE_DIM * EvalStages };
static void setUp(const Weights &weights);
};
class KingRookBishop
{
public:
enum { ONE_DIM = 374544, DIM = ONE_DIM * EvalStages };
static void setUp(const Weights &weights);
template<Player King>
static MultiInt evalOne(const NumEffectState &state);
static MultiInt eval(const NumEffectState &state);
private:
static CArray<MultiInt, 374544> table;
template <Player King>
static int index(const Square king, const Piece rook, const Piece bishop)
{
const int rook_x = std::abs(king.x() - rook.square().x());
const int bishop_x = std::abs(king.x() - bishop.square().x());
const int rook_y = (King == BLACK ? rook.square().y() - king.y() : king.y() - rook.square().y());
const int bishop_y = (King == BLACK ? bishop.square().y() - king.y() : king.y() - bishop.square().y());
return bishop_y + 8 + 17 * (bishop_x + 9 * (rook_y + 8 + 17 * (rook_x + 9 * ((bishop.owner() == King ? 1 : 0) + 2 * ((rook.owner() == King ? 1 : 0) + 2 * (2 * (bishop.isPromoted() ? 1 : 0) + (rook.isPromoted() ? 1 : 0)))))));
}
};
class NumPiecesBetweenBishopAndKing
{
friend class NumPiecesBetweenBishopAndKingSelf;
friend class NumPiecesBetweenBishopAndKingOpp;
friend class NumPiecesBetweenBishopAndKingAll;
public:
static MultiInt eval(const NumEffectState &state);
private:
static void countBetween(const NumEffectState &state,
Square king, Piece bishop,
int &self_count, int &opp_count,
int &total_count);
static CArray<MultiInt, 9> self_table;
static CArray<MultiInt, 9> opp_table;
static CArray<MultiInt, 9> all_table;
};
class NumPiecesBetweenBishopAndKingSelf
{
public:
enum { ONE_DIM = 9, DIM = ONE_DIM * EvalStages };
static void setUp(const Weights &weights);
};
class NumPiecesBetweenBishopAndKingOpp
{
public:
enum { ONE_DIM = 9, DIM = ONE_DIM * EvalStages };
static void setUp(const Weights &weights);
};
class NumPiecesBetweenBishopAndKingAll
{
public:
enum { ONE_DIM = 9, DIM = ONE_DIM * EvalStages };
static void setUp(const Weights &weights);
};
class BishopBishopPiece
{
public:
enum { ONE_DIM = 64, DIM = ONE_DIM * EvalStages };
static void setUp(const Weights &weights);
static MultiInt eval(const NumEffectState &state);
private:
static int index(Ptype ptype, bool self_with_support,
bool opp_with_support)
{
return ptype + PTYPE_SIZE * ((self_with_support ? 1 : 0) +
2 * (opp_with_support ? 1 : 0));
}
static CArray<MultiInt, 64> table;
};
class RookRook
{
public:
enum { ONE_DIM = 800, DIM = ONE_DIM * EvalStages };
static void setUp(const Weights &weights);
static MultiInt eval(const NumEffectState &state);
private:
template <bool SamePlayer, Player P>
static int index(Piece rook1, Piece rook2)
{
const int y1 = (rook1.isOnBoard() ? rook1.square().y() : 0);
const int y2 = (rook2.isOnBoard() ? rook2.square().y() : 0);
if (SamePlayer)
{
if (P == BLACK)
{
return y1 + 10 *
(y2 + 10 * ((rook1.isPromoted() ? 1 : 0) + 2 *
((rook2.isPromoted() ? 1 : 0) + 2 *
(SamePlayer ? 1 : 0))));
}
else
{
if (y1 == 0 || y2 == 0 || y1 == y2)
{
return (10 - y1) % 10 + 10 *
((10 - y2) % 10 + 10 * ((rook1.isPromoted() ? 1 : 0) + 2 *
((rook2.isPromoted() ? 1 : 0) + 2 *
(SamePlayer ? 1 : 0))));
}
else
{
return (10 - y2) % 10 + 10 *
((10 - y1) % 10 + 10 * ((rook2.isPromoted() ? 1 : 0) + 2 *
((rook1.isPromoted() ? 1 : 0) + 2 *
(SamePlayer ? 1 : 0))));
}
}
}
else
{
return y1 + 10 *
(y2 + 10 * ((rook1.isPromoted() ? 1 : 0) + 2 *
((rook2.isPromoted() ? 1 : 0) + 2 *
(SamePlayer ? 1 : 0))));
}
}
static int index(bool same_player, bool promoted1,
bool promoted2, int y1, int y2)
{
return y1 + 10 *
(y2 + 10 * ((promoted1 ? 1 : 0) + 2 *
((promoted2 ? 1 : 0) + 2 *
(same_player ? 1 : 0))));
}
static CArray<MultiInt, 800> table;
};
class RookRookPiece
{
public:
enum { ONE_DIM = 128, DIM = ONE_DIM * EvalStages };
static void setUp(const Weights &weights);
static MultiInt eval(const NumEffectState &state);
private:
static int index(Ptype ptype, bool self_with_support,
bool opp_with_support, bool vertical)
{
return ptype + PTYPE_SIZE * ((self_with_support ? 1 : 0) +
2 * (opp_with_support ? 1 : 0)) +
(vertical ? PTYPE_SIZE * 2 * 2 : 0);
}
static CArray<MultiInt, 128> table;
};
class BishopStandFile5
{
public:
enum { ONE_DIM = 32, DIM = ONE_DIM * EvalStages };
static void setUp(const Weights &weights);
static MultiInt eval(const NumEffectState &state);
private:
static CArray<MultiInt, 32> table;
};
class MajorCheckWithCapture
{
public:
enum {
ONE_DIM = PTYPE_SIZE * 2/*bishop or rook*/ * 2 /*promotable*/,
DIM = ONE_DIM * EvalStages
};
static void setUp(const Weights &weights);
static MultiInt eval(const NumEffectState &state);
private:
static CArray<MultiInt, ONE_DIM> table;
template <Player Owner>
static MultiInt addOne(const NumEffectState &state);
static size_t index(Ptype ptype, bool is_rook, bool can_promote)
{
return ptype * 4 + is_rook * 2 + can_promote;
}
};
class RookSilverKnight
{
public:
enum {
ONE_DIM = 5 * 9 * 9 * 9 * 9 * 9,
DIM = ONE_DIM * EvalStages
};
static void setUp(const Weights &weights);
static MultiInt eval(const NumEffectState &state);
private:
static CArray<MultiInt, ONE_DIM> table;
static size_t index(int rook_x, int rook_y, int silver_x, int silver_y,
int knight_x, int knight_y)
{
return knight_y + 9 * (knight_x + 9 * (silver_y + 9 * (silver_x + 9 * (rook_y + 9 * rook_x))));
}
};
class BishopSilverKnight
{
public:
enum {
ONE_DIM = 5 * 9 * 9 * 9 * 9 * 9,
DIM = ONE_DIM * EvalStages
};
static void setUp(const Weights &weights);
static MultiInt eval(const NumEffectState &state);
private:
static CArray<MultiInt, ONE_DIM> table;
static size_t index(int bishop_x, int bishop_y, int silver_x, int silver_y,
int knight_x, int knight_y)
{
return knight_y + 9 * (knight_x + 9 * (silver_y + 9 * (silver_x + 9 * (bishop_y + 9 * bishop_x))));
}
};
class AttackMajorsInBase
{
public:
enum {
ONE_DIM = PTYPE_SIZE * PTYPE_SIZE * 2 * 2 * 2,
DIM = ONE_DIM * EvalStages
};
static void setUp(const Weights &weights);
static MultiInt eval(const NumEffectState &state);
private:
static CArray<MultiInt, ONE_DIM> table;
size_t maxActive() const { return 4; }
static int index(Ptype support, Ptype attack, bool has_gold,
bool rook_support, bool bishop_support)
{
return (unpromoteSafe(support)*16 + unpromoteSafe(attack))*8+has_gold*4
+rook_support*2+bishop_support;
}
template <Player Owner>
static void addOne(const NumEffectState &state, Piece rook, MultiInt&);
};
}
}
}
#endif // EVAL_ML_MAJORPIECE_H
// ;;; Local Variables:
// ;;; mode:c++
// ;;; c-basic-offset:2
// ;;; End:
osl::CArray
Definition container.h:20
osl::NumEffectState
利きを持つ局面
Definition numEffectState.h:34
osl::Piece
駒.
Definition basic_type.h:788
osl::Piece::isPromoted
bool isPromoted() const
promoteした駒かどうかをチェックする
Definition basic_type.h:898
osl::Piece::square
const Square square() const
Definition basic_type.h:832
osl::Piece::owner
Player owner() const
Definition basic_type.h:963
osl::Piece::isOnBoard
bool isOnBoard() const
Definition basic_type.h:985
osl::SimpleState::pieceOf
const Piece pieceOf(int num) const
Definition simpleState.h:76
osl::Square
Definition basic_type.h:532
osl::Square::y
int y() const
将棋としてのY座標を返す.
Definition basic_type.h:567
osl::Square::x
int x() const
将棋としてのX座標を返す.
Definition basic_type.h:563
osl::eval::ml::AllMajor
Definition majorPiece.h:117
osl::eval::ml::AllMajor::eval
static MultiInt eval(int black_major_count)
Definition majorPiece.h:121
osl::eval::ml::AllMajor::DIM
@ DIM
Definition majorPiece.h:119
osl::eval::ml::AllMajor::weight
static MultiInt weight
Definition majorPiece.h:131
osl::eval::ml::AllMajor::setUp
static void setUp(const Weights &weights, int stage)
Definition majorPiece.cc:127
osl::eval::ml::AttackMajorsInBase
Definition majorPiece.h:689
osl::eval::ml::AttackMajorsInBase::index
static int index(Ptype support, Ptype attack, bool has_gold, bool rook_support, bool bishop_support)
Definition majorPiece.h:700
osl::eval::ml::AttackMajorsInBase::addOne
static void addOne(const NumEffectState &state, Piece rook, MultiInt &)
Definition majorPiece.cc:1439
osl::eval::ml::AttackMajorsInBase::maxActive
size_t maxActive() const
Definition majorPiece.h:699
osl::eval::ml::AttackMajorsInBase::table
static CArray< MultiInt, ONE_DIM > table
Definition majorPiece.h:698
osl::eval::ml::AttackMajorsInBase::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:1427
osl::eval::ml::AttackMajorsInBase::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:692
osl::eval::ml::AttackMajorsInBase::DIM
@ DIM
Definition majorPiece.h:693
osl::eval::ml::BishopBishopPiece
Definition majorPiece.h:533
osl::eval::ml::BishopBishopPiece::index
static int index(Ptype ptype, bool self_with_support, bool opp_with_support)
Definition majorPiece.h:539
osl::eval::ml::BishopBishopPiece::table
static CArray< MultiInt, 64 > table
Definition majorPiece.h:545
osl::eval::ml::BishopBishopPiece::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:923
osl::eval::ml::BishopBishopPiece::DIM
@ DIM
Definition majorPiece.h:535
osl::eval::ml::BishopBishopPiece::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:535
osl::eval::ml::BishopEffectBase
Definition majorPiece.h:307
osl::eval::ml::BishopEffectBase::defense_table
static CArray< MultiInt, 612 > defense_table
Definition majorPiece.h:394
osl::eval::ml::BishopEffectBase::index2
static int index2(int x_diff, int y_diff, bool isP)
黒の角(馬)がある場所は空マスでないのでその分を補正するテーブル {attack,defense}_nospace へのアクセス (x_diff, y_diff) - 玉を基準にしてみた角(馬)の相対位...
Definition majorPiece.h:386
osl::eval::ml::BishopEffectBase::defense_ur
static CArray< MultiInt, 23104 > defense_ur
Definition majorPiece.h:400
osl::eval::ml::BishopEffectBase::attack_ur
static CArray< MultiInt, 23104 > attack_ur
Definition majorPiece.h:396
osl::eval::ml::BishopEffectBase::defense_dr
static CArray< MultiInt, 23104 > defense_dr
Definition majorPiece.h:402
osl::eval::ml::BishopEffectBase::attack_table
static CArray< MultiInt, 612 > attack_table
Definition majorPiece.h:393
osl::eval::ml::BishopEffectBase::index0
static int index0(int x_diff, int y_diff, PtypeO ptypeO, bool ur, bool promoted)
Definition majorPiece.h:329
osl::eval::ml::BishopEffectBase::attack_dr
static CArray< MultiInt, 23104 > attack_dr
Definition majorPiece.h:398
osl::eval::ml::BishopEffectBase::index
static int index(int x_diff, int y_diff, bool ur, bool promoted)
Definition majorPiece.h:323
osl::eval::ml::BishopEffectBase::index1
static int index1(int x_diff, int y_diff, PtypeO ptypeO, bool isP)
黒の角(馬)からの利きのある駒のindex {attack,defense}_{ul,ur,dl,dr} へのアクセスに使う (x_diff, y_diff) - 玉を基準に見た駒の相対位置 ptype...
Definition majorPiece.h:359
osl::eval::ml::BishopEffectBase::attack_nospace
static CArray< MultiInt, 722 > attack_nospace
Definition majorPiece.h:404
osl::eval::ml::BishopEffectBase::index1
static int index1(Square king, Square from, PtypeO ptypeO, bool isP)
黒の角(馬)からの利きのある駒のindex {attack,defense}_{ul,ur,dl,dr} へのアクセスに使う from - 駒の位置 king - 玉の位置 ptypeO - 駒の種類，...
Definition majorPiece.h:345
osl::eval::ml::BishopEffectBase::defense_nospace
static CArray< MultiInt, 722 > defense_nospace
Definition majorPiece.h:405
osl::eval::ml::BishopEffectBase::BishopEffectPiece
friend class BishopEffectPiece
Definition majorPiece.h:308
osl::eval::ml::BishopEffectBase::DIM
@ DIM
Definition majorPiece.h:310
osl::eval::ml::BishopEffectBase::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:310
osl::eval::ml::BishopEffectBase::piece_table
static CArray< MultiInt, 32 > piece_table
Definition majorPiece.h:395
osl::eval::ml::BishopEffectBase::index2
static int index2(Square king, Square from, bool isP)
黒の角(馬)がある場所は空マスでないのでその分を補正するテーブル {attack,defense}_nospace へのアクセス king - 玉の位置 from - 角(馬)の位置 isP - 馬の場...
Definition majorPiece.h:374
osl::eval::ml::BishopEffectBase::defense_dl
static CArray< MultiInt, 23104 > defense_dl
Definition majorPiece.h:403
osl::eval::ml::BishopEffectBase::attack_ul
static CArray< MultiInt, 23104 > attack_ul
Definition majorPiece.h:397
osl::eval::ml::BishopEffectBase::defense_ul
static CArray< MultiInt, 23104 > defense_ul
Definition majorPiece.h:401
osl::eval::ml::BishopEffectBase::attack_dl
static CArray< MultiInt, 23104 > attack_dl
Definition majorPiece.h:399
osl::eval::ml::BishopEffectBase::evalOne
static MultiInt evalOne(const NumEffectState &state, Square bishop, Square myKing, Square opKing, Square ulp, Square urp, Square dlp, Square drp, bool isP)
Definition majorPiece.cc:480
osl::eval::ml::BishopEffectPieceKingRelative
Definition majorPiece.h:420
osl::eval::ml::BishopEffectPieceKingRelative::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:570
osl::eval::ml::BishopEffectPieceKingRelative::DIM
@ DIM
Definition majorPiece.h:422
osl::eval::ml::BishopEffectPieceKingRelative::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:422
osl::eval::ml::BishopEffectPiece
Definition majorPiece.h:413
osl::eval::ml::BishopEffectPiece::DIM
@ DIM
Definition majorPiece.h:415
osl::eval::ml::BishopEffectPiece::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:559
osl::eval::ml::BishopEffect
Definition majorPiece.h:408
osl::eval::ml::BishopEffect::setUp
static void setUp(const Weights &weights, int stage)
Definition majorPiece.cc:550
osl::eval::ml::BishopHeadKingRelative
Definition majorPiece.h:466
osl::eval::ml::BishopHeadKingRelative::DIM
@ DIM
Definition majorPiece.h:468
osl::eval::ml::BishopHeadKingRelative::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:468
osl::eval::ml::BishopHeadKingRelative::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:674
osl::eval::ml::BishopHeadX
Definition majorPiece.h:472
osl::eval::ml::BishopHeadX::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:474
osl::eval::ml::BishopHeadX::DIM
@ DIM
Definition majorPiece.h:474
osl::eval::ml::BishopHeadX::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:697
osl::eval::ml::BishopHead
Definition majorPiece.h:427
osl::eval::ml::BishopHead::table
static CArray< MultiInt, 32 > table
Definition majorPiece.h:460
osl::eval::ml::BishopHead::indexK
static int indexK(Player player, PtypeO ptypeO, int x_diff, int y_diff)
Definition majorPiece.h:435
osl::eval::ml::BishopHead::indexX
static int indexX(PtypeO ptypeO, int x)
Definition majorPiece.h:448
osl::eval::ml::BishopHead::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:664
osl::eval::ml::BishopHead::DIM
@ DIM
Definition majorPiece.h:431
osl::eval::ml::BishopHead::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:431
osl::eval::ml::BishopHead::king_table
static CArray< MultiInt, 4896 > king_table
Definition majorPiece.h:461
osl::eval::ml::BishopHead::BishopHeadX
friend class BishopHeadX
Definition majorPiece.h:429
osl::eval::ml::BishopHead::x_table
static CArray< MultiInt, 160 > x_table
Definition majorPiece.h:462
osl::eval::ml::BishopHead::BishopHeadKingRelative
friend class BishopHeadKingRelative
Definition majorPiece.h:428
osl::eval::ml::BishopSilverKnight
Definition majorPiece.h:671
osl::eval::ml::BishopSilverKnight::index
static size_t index(int bishop_x, int bishop_y, int silver_x, int silver_y, int knight_x, int knight_y)
Definition majorPiece.h:681
osl::eval::ml::BishopSilverKnight::table
static CArray< MultiInt, ONE_DIM > table
Definition majorPiece.h:680
osl::eval::ml::BishopSilverKnight::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:674
osl::eval::ml::BishopSilverKnight::DIM
@ DIM
Definition majorPiece.h:675
osl::eval::ml::BishopSilverKnight::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:1343
osl::eval::ml::BishopStandFile5
Definition majorPiece.h:624
osl::eval::ml::BishopStandFile5::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:1177
osl::eval::ml::BishopStandFile5::table
static CArray< MultiInt, 32 > table
Definition majorPiece.h:630
osl::eval::ml::BishopStandFile5::DIM
@ DIM
Definition majorPiece.h:626
osl::eval::ml::BishopStandFile5::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:626
osl::eval::ml::BishopYEnding
Definition majorPiece.h:61
osl::eval::ml::BishopYOpening
Definition majorPiece.h:58
osl::eval::ml::KingRookBishop
Definition majorPiece.h:478
osl::eval::ml::KingRookBishop::DIM
@ DIM
Definition majorPiece.h:480
osl::eval::ml::KingRookBishop::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:480
osl::eval::ml::KingRookBishop::table
static CArray< MultiInt, 374544 > table
Definition majorPiece.h:486
osl::eval::ml::KingRookBishop::index
static int index(const Square king, const Piece rook, const Piece bishop)
Definition majorPiece.h:488
osl::eval::ml::KingRookBishop::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:750
osl::eval::ml::KingRookBishop::evalOne
static MultiInt evalOne(const NumEffectState &state)
Definition majorPiece.cc:761
osl::eval::ml::MajorCheckWithCapture
Definition majorPiece.h:634
osl::eval::ml::MajorCheckWithCapture::index
static size_t index(Ptype ptype, bool is_rook, bool can_promote)
Definition majorPiece.h:646
osl::eval::ml::MajorCheckWithCapture::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:637
osl::eval::ml::MajorCheckWithCapture::DIM
@ DIM
Definition majorPiece.h:638
osl::eval::ml::MajorCheckWithCapture::table
static CArray< MultiInt, ONE_DIM > table
Definition majorPiece.h:643
osl::eval::ml::MajorCheckWithCapture::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:1209
osl::eval::ml::MajorCheckWithCapture::addOne
static MultiInt addOne(const NumEffectState &state)
osl::eval::ml::MajorGoldSilverAttackedEnding
Definition majorPiece.h:152
osl::eval::ml::MajorGoldSilverAttackedOpening
Definition majorPiece.h:149
osl::eval::ml::MajorGoldSilverAttacked
Definition majorPiece.h:136
osl::eval::ml::MajorGoldSilverAttacked::evalOne
static int evalOne(const NumEffectState &state)
Definition majorPiece.cc:157
osl::eval::ml::MajorGoldSilverAttacked::index
static int index(const NumEffectState &state, Piece piece)
Definition majorPiece.cc:148
osl::eval::ml::MajorGoldSilverAttacked::DIM
@ DIM
Definition majorPiece.h:138
osl::eval::ml::MajorGoldSilverAttacked::table
static CArray< int, 32 > table
Definition majorPiece.h:145
osl::eval::ml::MajorGoldSilverAttacked::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:138
osl::eval::ml::MajorY
Definition majorPiece.h:20
osl::eval::ml::MajorY::DIM
@ DIM
Definition majorPiece.h:29
osl::eval::ml::MajorY::table
static CArray< int, 18 > table
Definition majorPiece.h:22
osl::eval::ml::MajorY::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:12
osl::eval::ml::MajorY::index
static int index(Piece piece)
Definition majorPiece.h:23
osl::eval::ml::MajorY::eval
static int eval(const NumEffectState &state)
Definition majorPiece.h:31
osl::eval::ml::NumPiecesBetweenBishopAndKingAll
Definition majorPiece.h:527
osl::eval::ml::NumPiecesBetweenBishopAndKingAll::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:823
osl::eval::ml::NumPiecesBetweenBishopAndKingAll::DIM
@ DIM
Definition majorPiece.h:529
osl::eval::ml::NumPiecesBetweenBishopAndKingAll::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:529
osl::eval::ml::NumPiecesBetweenBishopAndKingOpp
Definition majorPiece.h:521
osl::eval::ml::NumPiecesBetweenBishopAndKingOpp::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:812
osl::eval::ml::NumPiecesBetweenBishopAndKingOpp::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:523
osl::eval::ml::NumPiecesBetweenBishopAndKingOpp::DIM
@ DIM
Definition majorPiece.h:523
osl::eval::ml::NumPiecesBetweenBishopAndKingSelf
Definition majorPiece.h:515
osl::eval::ml::NumPiecesBetweenBishopAndKingSelf::DIM
@ DIM
Definition majorPiece.h:517
osl::eval::ml::NumPiecesBetweenBishopAndKingSelf::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:517
osl::eval::ml::NumPiecesBetweenBishopAndKingSelf::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:801
osl::eval::ml::NumPiecesBetweenBishopAndKing
Definition majorPiece.h:499
osl::eval::ml::NumPiecesBetweenBishopAndKing::NumPiecesBetweenBishopAndKingAll
friend class NumPiecesBetweenBishopAndKingAll
Definition majorPiece.h:502
osl::eval::ml::NumPiecesBetweenBishopAndKing::NumPiecesBetweenBishopAndKingOpp
friend class NumPiecesBetweenBishopAndKingOpp
Definition majorPiece.h:501
osl::eval::ml::NumPiecesBetweenBishopAndKing::opp_table
static CArray< MultiInt, 9 > opp_table
Definition majorPiece.h:511
osl::eval::ml::NumPiecesBetweenBishopAndKing::all_table
static CArray< MultiInt, 9 > all_table
Definition majorPiece.h:512
osl::eval::ml::NumPiecesBetweenBishopAndKing::self_table
static CArray< MultiInt, 9 > self_table
Definition majorPiece.h:510
osl::eval::ml::NumPiecesBetweenBishopAndKing::eval
static MultiInt eval(const NumEffectState &state)
Definition majorPiece.cc:834
osl::eval::ml::NumPiecesBetweenBishopAndKing::countBetween
static void countBetween(const NumEffectState &state, Square king, Piece bishop, int &self_count, int &opp_count, int &total_count)
Definition majorPiece.cc:863
osl::eval::ml::NumPiecesBetweenBishopAndKing::NumPiecesBetweenBishopAndKingSelf
friend class NumPiecesBetweenBishopAndKingSelf
Definition majorPiece.h:500
osl::eval::ml::RookEffectBase
Definition majorPiece.h:156
osl::eval::ml::RookEffectBase::attack_d
static CArray< MultiInt, 23104 > attack_d
Definition majorPiece.h:257
osl::eval::ml::RookEffectBase::evalOne
static MultiInt evalOne(const NumEffectState &state, Square rook, Square myKing, Square opKing, Square up, Square dp, Square rp, Square lp, bool isP)
Definition majorPiece.cc:209
osl::eval::ml::RookEffectBase::index1
static int index1(int x_diff, int y_diff, PtypeO ptypeO, bool isP)
黒の飛車(竜)からの利きのある駒のindex {attack,defense}_{u,r,l,d} へのアクセスに使う (x_diff, y_diff) - 玉を基準に見た駒の相対位置 ptypeO -...
Definition majorPiece.h:219
osl::eval::ml::RookEffectBase::defense_d
static CArray< MultiInt, 23104 > defense_d
Definition majorPiece.h:261
osl::eval::ml::RookEffectBase::defense_u
static CArray< MultiInt, 23104 > defense_u
Definition majorPiece.h:260
osl::eval::ml::RookEffectBase::attack_table
static CArray< MultiInt, 612 > attack_table
Definition majorPiece.h:253
osl::eval::ml::RookEffectBase::index0
static int index0(int abs_x_diff, int y_diff, PtypeO ptypeO, bool horizontal, bool promoted)
黒の飛車(竜)から利きのある駒 (abs_x_diff, y_diff) - 駒を基準にした玉の相対位置 abs_x_diffは絶対値 ptypeO - 駒のptypeO,...
Definition majorPiece.h:190
osl::eval::ml::RookEffectBase::attack_u
static CArray< MultiInt, 23104 > attack_u
Definition majorPiece.h:256
osl::eval::ml::RookEffectBase::attack_l
static CArray< MultiInt, 23104 > attack_l
Definition majorPiece.h:258
osl::eval::ml::RookEffectBase::attack_r
static CArray< MultiInt, 23104 > attack_r
Definition majorPiece.h:259
osl::eval::ml::RookEffectBase::attack_nospace
static CArray< MultiInt, 722 > attack_nospace
Definition majorPiece.h:264
osl::eval::ml::RookEffectBase::DIM
@ DIM
Definition majorPiece.h:159
osl::eval::ml::RookEffectBase::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:159
osl::eval::ml::RookEffectBase::defense_nospace
static CArray< MultiInt, 722 > defense_nospace
Definition majorPiece.h:265
osl::eval::ml::RookEffectBase::defense_r
static CArray< MultiInt, 23104 > defense_r
Definition majorPiece.h:263
osl::eval::ml::RookEffectBase::defense_table
static CArray< MultiInt, 612 > defense_table
Definition majorPiece.h:254
osl::eval::ml::RookEffectBase::index2
static int index2(int x_diff, int y_diff, bool isP)
黒の飛車(竜)がある場所は空マスでないのでその分を補正するテーブル {attack,defense}_nospace へのアクセス (x_diff, y_diff) - 玉を基準にしてみた飛車(竜)の相...
Definition majorPiece.h:246
osl::eval::ml::RookEffectBase::RookEffectPiece
friend class RookEffectPiece
Definition majorPiece.h:157
osl::eval::ml::RookEffectBase::index2
static int index2(Square king, Square from, bool isP)
黒の飛車(竜)がある場所は空マスでないのでその分を補正するテーブル {attack,defense}_nospace へのアクセス king - 玉の位置 from - 飛車(竜)の位置 isP - 竜...
Definition majorPiece.h:234
osl::eval::ml::RookEffectBase::index1
static int index1(Square king, Square from, PtypeO ptypeO, bool isP)
黒の飛車(竜)からの利きのある駒のindex {attack,defense}_{u,r,l,d} へのアクセスに使う from - 駒の位置 king - 玉の位置 ptypeO - 駒の種類，白から...
Definition majorPiece.h:205
osl::eval::ml::RookEffectBase::index
static int index(int abs_x_diff, int y_diff, bool horizontal, bool is_promoted)
(abs_x_diff, y_diff) - 玉を原点とした時の空マスの相対位置 horizontal - 飛車の横利きがある場合 is_promoted - 竜の場合
Definition majorPiece.h:177
osl::eval::ml::RookEffectBase::piece_table
static CArray< MultiInt, 32 > piece_table
Definition majorPiece.h:255
osl::eval::ml::RookEffectBase::defense_l
static CArray< MultiInt, 23104 > defense_l
Definition majorPiece.h:262
osl::eval::ml::RookEffectPieceKingRelative
Definition majorPiece.h:280
osl::eval::ml::RookEffectPieceKingRelative::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:282
osl::eval::ml::RookEffectPieceKingRelative::DIM
@ DIM
Definition majorPiece.h:282
osl::eval::ml::RookEffectPieceKingRelative::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:299
osl::eval::ml::RookEffectPiece
Definition majorPiece.h:274
osl::eval::ml::RookEffectPiece::DIM
@ DIM
Definition majorPiece.h:276
osl::eval::ml::RookEffectPiece::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:289
osl::eval::ml::RookEffect
Definition majorPiece.h:268
osl::eval::ml::RookEffect::setUp
static void setUp(const Weights &weights, int stage)
Definition majorPiece.cc:280
osl::eval::ml::RookPawnEnding
Definition majorPiece.h:78
osl::eval::ml::RookPawnOpening
Definition majorPiece.h:75
osl::eval::ml::RookPawnYX
Definition majorPiece.h:110
osl::eval::ml::RookPawnYX::DIM
@ DIM
Definition majorPiece.h:112
osl::eval::ml::RookPawnYX::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:112
osl::eval::ml::RookPawnYX::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:60
osl::eval::ml::RookPawnY
Definition majorPiece.h:82
osl::eval::ml::RookPawnY::table
static CArray< MultiInt, 180 > table
Definition majorPiece.h:104
osl::eval::ml::RookPawnY::RookPawnYX
friend class RookPawnYX
Definition majorPiece.h:83
osl::eval::ml::RookPawnY::DIM
@ DIM
Definition majorPiece.h:85
osl::eval::ml::RookPawnY::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:85
osl::eval::ml::RookPawnY::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:74
osl::eval::ml::RookPawnY::indexY
static int indexY(const Square king, const Piece rook, int pawn_y)
Definition majorPiece.h:96
osl::eval::ml::RookPawnY::y_attack_table
static CArray< MultiInt, 1620 > y_attack_table
Definition majorPiece.h:105
osl::eval::ml::RookPawnY::y_defense_table
static CArray< MultiInt, 1620 > y_defense_table
Definition majorPiece.h:106
osl::eval::ml::RookPawnY::index
static int index(const Piece rook, const int pawn_y)
Definition majorPiece.h:90
osl::eval::ml::RookPawn
Definition majorPiece.h:66
osl::eval::ml::RookPawn::DIM
@ DIM
Definition majorPiece.h:68
osl::eval::ml::RookPawn::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:26
osl::eval::ml::RookPawn::weight
static int weight
Definition majorPiece.h:72
osl::eval::ml::RookPromoteDefenseRookH
Definition majorPiece.h:299
osl::eval::ml::RookPromoteDefenseRookH::DIM
@ DIM
Definition majorPiece.h:301
osl::eval::ml::RookPromoteDefenseRookH::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:301
osl::eval::ml::RookPromoteDefenseRookH::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:387
osl::eval::ml::RookPromoteDefense
Definition majorPiece.h:287
osl::eval::ml::RookPromoteDefense::promote_defense_table
static CArray< MultiInt, 256 > promote_defense_table
Definition majorPiece.h:294
osl::eval::ml::RookPromoteDefense::DIM
@ DIM
Definition majorPiece.h:290
osl::eval::ml::RookPromoteDefense::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:290
osl::eval::ml::RookPromoteDefense::RookPromoteDefenseRookH
friend class RookPromoteDefenseRookH
Definition majorPiece.h:288
osl::eval::ml::RookPromoteDefense::promote_defense_rook_table
static CArray< MultiInt, 144 > promote_defense_rook_table
Definition majorPiece.h:295
osl::eval::ml::RookPromoteDefense::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:378
osl::eval::ml::RookRookPiece
Definition majorPiece.h:607
osl::eval::ml::RookRookPiece::table
static CArray< MultiInt, 128 > table
Definition majorPiece.h:620
osl::eval::ml::RookRookPiece::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:609
osl::eval::ml::RookRookPiece::DIM
@ DIM
Definition majorPiece.h:609
osl::eval::ml::RookRookPiece::index
static int index(Ptype ptype, bool self_with_support, bool opp_with_support, bool vertical)
Definition majorPiece.h:613
osl::eval::ml::RookRookPiece::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:1094
osl::eval::ml::RookRook
Definition majorPiece.h:549
osl::eval::ml::RookRook::index
static int index(bool same_player, bool promoted1, bool promoted2, int y1, int y2)
Definition majorPiece.h:595
osl::eval::ml::RookRook::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:1002
osl::eval::ml::RookRook::index
static int index(Piece rook1, Piece rook2)
Definition majorPiece.h:556
osl::eval::ml::RookRook::DIM
@ DIM
Definition majorPiece.h:551
osl::eval::ml::RookRook::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:551
osl::eval::ml::RookRook::table
static CArray< MultiInt, 800 > table
Definition majorPiece.h:603
osl::eval::ml::RookSilverKnight
Definition majorPiece.h:653
osl::eval::ml::RookSilverKnight::setUp
static void setUp(const Weights &weights)
Definition majorPiece.cc:1259
osl::eval::ml::RookSilverKnight::ONE_DIM
@ ONE_DIM
Definition majorPiece.h:656
osl::eval::ml::RookSilverKnight::DIM
@ DIM
Definition majorPiece.h:657
osl::eval::ml::RookSilverKnight::table
static CArray< MultiInt, ONE_DIM > table
Definition majorPiece.h:662
osl::eval::ml::RookSilverKnight::index
static size_t index(int rook_x, int rook_y, int silver_x, int silver_y, int knight_x, int knight_y)
Definition majorPiece.h:663
osl::eval::ml::RookYEnding
Definition majorPiece.h:55
osl::eval::ml::RookYOpening
Definition majorPiece.h:52
midgame.h
osl::eval::ml
Definition eval_pieceStand.cc:470
osl::eval
Definition eval_pieceStand.cc:468
osl
Definition additionalEffect.h:6
osl::Ptype
Ptype
駒の種類を4ビットでコード化する
Definition basic_type.h:84
osl::PTYPE_EMPTY
@ PTYPE_EMPTY
Definition basic_type.h:85
osl::CArray2d
CArray< CArray< T, Capacity2 >, Capacity1 > CArray2d
Definition container.h:95
osl::PTYPE_SIZE
const int PTYPE_SIZE
Definition basic_type.h:107
osl::getPtype
Ptype getPtype(PtypeO ptypeO)
Definition basic_type.h:217
osl::unpromoteSafe
constexpr Ptype unpromoteSafe(Ptype ptype)
Definition basic_type.h:164
osl::ptypeOIndex
unsigned int ptypeOIndex(PtypeO ptypeo)
Definition basic_type.h:205
osl::MultiInt
QuadInt MultiInt
Definition midgame.h:13
osl::Player
Player
Definition basic_type.h:8
osl::WHITE
@ WHITE
Definition basic_type.h:10
osl::BLACK
@ BLACK
Definition basic_type.h:9
osl::PtypeO
PtypeO
Player + Ptype [-15, 15] PtypeO の O は Owner の O.
Definition basic_type.h:199
osl::PTYPEO_MIN
@ PTYPEO_MIN
Definition basic_type.h:200
osl::EvalStages
const int EvalStages
Definition midgame.h:12
osl::altIfPiece
PtypeO altIfPiece(PtypeO ptypeO)
Pieceの時にはowner を反転する
Definition basic_type.h:281
numEffectState.h
osl::PtypeTraits
Definition ptypeTraits.h:12
osl::eval::ml::Weights
Definition weights.h:18
weights.h