My Project
Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
osl::NumEffectState Class Reference

利きを持つ局面 More...

#include <numEffectState.h>

Inheritance diagram for osl::NumEffectState:
osl::SimpleState

Public Member Functions

 NumEffectState (const SimpleState &st=SimpleState(HIRATE))
 
 ~NumEffectState ()
 
void copyFrom (const NumEffectState &src)
 主要部分を高速にコピーする.
 
void copyFrom (const SimpleState &src)
 
bool isConsistent (bool showError=true) const
 
bool isConsistent (const NumEffectState &prev, Move moved, bool show_error=true) const
 局面更新に関する一貫性をテスト
 
void showEffect (std::ostream &os) const
 
const PieceMaskpiecesOnBoard (Player p) const
 
const PieceMask promotedPieces () const
 
const PieceMask pin (Player king) const
 
const PieceMask checkShadow (Player attack) const
 attack の駒で動くと開き王手になる可能性がある集合
 
PieceMask pinOrOpen (Player king) const
 
uint64_t Iking8Info (Player king) const
 
const checkmate::King8Info king8Info (Player king) const
 
bool inCheck (Player P) const
 Pの玉が王手状態
 
bool inCheck () const
 手番の玉が王手状態
 
bool inUnblockableCheck (Player target) const
 target の王に合駒可能でない王手がかかっているかどうか.
 
const EffectedNumTablelongEffectNumTable () const
 
const PieceMask effectedMask (Player pl) const
 pl からの利きが(1つ以上)ある駒一覧
 
const PieceMask effectedChanged (Player pl) const
 前の指手でeffectedMask(pl)が変化したか.
 
bool hasChangedEffects () const
 
const BoardMask changedEffects (Player pl) const
 
const BoardMask changedEffects () const
 
const NumBitmapEffect changedPieces () const
 
template<Ptype PTYPE>
bool longEffectChanged () const
 
template<Ptype PTYPE>
bool anyEffectChanged () const
 
const Piece findThreatenedPiece (Player P) const
 取られそうなPの駒で価値が最大のもの
 
bool isOnBoardNum (int num) const
 
Square mobilityOf (Direction d, int num) const
 
Square mobilityOf (Direction d, Piece p) const
 
Square kingMobilityAbs (Player p, Direction d) const
 
Square kingMobilityOfPlayer (Player p, Direction d) const
 玉がd方向にどこまで動けるかを返す
 
template<Player P>
Direction pinnedDir (Piece p) const
 pinされた駒がPのKingから見てどの方向か? Pから見たdirectionを返す
 
Direction pinnedDir (Piece p) const
 
template<Player P>
bool pinnedCanMoveTo (Piece p, Square to) const
 pinされた駒pがtoに動けるか? pinに関係がなければtoへ動けるという前提
 
bool pinnedCanMoveTo (Piece p, Square to) const
 
template<Player P>
Piece pinAttacker (Piece pinned) const
 Pのpinされた駒から,そのpinの原因となっている長い利きを持つ駒を得る.
 
Piece pinAttacker (Piece pinned) const
 
const NumBitmapEffect effectSetAt (Square sq) const
 
int countEffect (Player player, Square target) const
 利きの数を数える.
 
int countEffect (Player player, Square target, PieceMask pins) const
 利きの数を数える.
 
template<Ptype PTYPE>
const mask_t allEffectAt (Player P, Square target) const
 
const mask_t allEffectAt (Player P, Ptype ptype, Square target) const
 
template<Ptype PTYPE>
const mask_t longEffectAt (Square target) const
 
template<Ptype PTYPE>
const mask_t longEffectAt (Square target, Player owner) const
 
const mask_t longEffectAt (Square target) const
 
const mask_t longEffectAt (Square target, Player owner) const
 
template<Player P>
bool hasEffectAt (Square target) const
 対象とするマスにあるプレイヤーの利きがあるかどうか.
 
bool hasEffectAt (Player player, Square target) const
 対象とするマスにあるプレイヤーの利きがあるかどうか.
 
template<Ptype PTYPE>
bool hasLongEffectAt (Player P, Square to) const
 あるマスにPTYPEの長い利きがあるかどうか.
 
template<Ptype PTYPE>
bool hasEffectByPtype (Player attack, Square target) const
 target に ptype の利きがあるか? 成不成を区別しない
 
template<Ptype PTYPE>
bool hasEffectByPtypeStrict (Player attack, Square target) const
 target に ptype の利きがあるか? 成不成を区別
 
template<Direction Dir, Player P>
bool hasEffectInDirection (Square to) const
 あるマスにあるDirectionでの長い利きがあるかどうか.
 
bool hasEffectNotBy (Player player, Piece piece, Square target) const
 対象とするマスにあるプレイヤーの(ただしある駒以外)利きがあるかどうか.
 
bool hasEffectByNotPinnedAndKing (Player pl, Square target) const
 {pinされている駒, 玉以外}からの利きがある.
 
bool hasEffectByNotPinned (Player pl, Square target) const
 pinされている駒以外からの利きがある.
 
bool hasMultipleEffectAt (Player player, Square target) const
 二つ以上の駒から利きがある.
 
bool hasEffectByPiece (Piece attack, Square target) const
 駒attack が target に利きを持つか (旧hasEffectToと統合)
 
bool hasEffectIf (PtypeO ptypeo, Square attacker, Square target) const
 attackerにptypeoの駒がいると仮定した場合にtargetに利きがあるかどうか を stateをupdateしないで確かめる.
 
template<Player P>
bool hasEffectByWithRemove (Square target, Square removed) const
 
bool hasEffectByWithRemove (Player player, Square target, Square removed) const
 
template<Ptype PTYPE>
const Piece findAttackAt (Player attack, Square target) const
 return a piece s.t.
 
template<Ptype PTYPE>
const Piece findAttackAtStrict (Player attack, Square target) const
 
const Piece findLongAttackAt (Player owner, int piece, Direction d) const
 pieceのd方向から長い利きがある場合にその駒を返す。
 
const Piece findLongAttackAt (Player owner, Piece piece, Direction d) const
 
const Piece findLongAttackAt (Piece piece, Direction d) const
 
const Piece findLongAttackAt (Square square, Direction d) const
 
const Piece selectCheapPiece (PieceMask effect) const
 利きの中から安そうな駒を選ぶ
 
const Piece findCheapAttack (Player P, Square square) const
 
const Piece findCheapAttackNotBy (Player P, Square square, const PieceMask &ignore) const
 
const Piece findAttackNotBy (Player P, Square square, const PieceMask &ignore) const
 
template<Player P>
bool findCheckPiece (Piece &attack_piece) const
 王手駒を探す
 
bool hasEffectAt (Player P, Square target, Piece &attackerPiece) const
 
template<Player P>
bool hasEffectAt (Square target, Piece &attackerPiece) const
 
bool isSafeMove (Move move) const
 
bool isCheck (Move move) const
 
bool isPawnDropCheckmate (Move move) const
 
bool isDirectCheck (Move move) const
 
bool isOpenCheck (Move move) const
 
template<bool show_error>
bool isAlmostValidMove (Move move) const
 合法手かどうかを簡単に検査する.局面に依存するチェックのみ. ルール上指せない手である可能性がある場合は,isValidMove を用いる.
 
bool isAlmostValidMove (Move move, bool show_error=true) const
 
void generateLegal (MoveVector &) const
 全ての合法手を生成する.
 
void generateWithFullUnpromotions (MoveVector &) const
 打歩詰め絡み以外では有利にはならない手も含め, 全ての合法手を生成す る(Move::ignoredUnpromoteも生成する).
 
void generateAllUnsafe (MoveVector &) const
 自殺を含めてすべての手を生成
 
void makeMove (Move move)
 
void makeMovePass ()
 
template<class Function >
void makeUnmakePass (Function &f)
 
template<class Function >
void makeUnmakeMove (Move move, Function &f)
 
template<Player P, class Function >
void makeUnmakeMove (Player2Type< P > player, Move move, Function &f)
 
bool wasCheckEvasion (Move last_move) const
 
template<Player P, Ptype T, typename F >
void forEachOnBoard (F &func) const
 T は isBasic でなくても動くが unpromote(T) の結果と同じ.
 
template<Player P, Ptype T, typename F >
void forEachOnBoardPtypeStrict (F &func) const
 T の成不成を区別
 
template<Player P, class Action >
void forEachEffect (Square sq, Action &action) const
 sq への利きを持つ各駒に関して処理を行う.
 
template<Player P, class Action >
void forEachEffect (Square sq, Action &action, const PieceMask &pin) const
 sq にある駒を取る move を生成して action の member を呼び出す.
 
template<Player P, class Action >
void forEachEffectNotBy (Square sq, Piece piece, Action &action) const
 sq に移動する move を生成して action の member を呼び出す
 
template<Player P, Ptype Type, class Action >
void forEachEffectOfPiece (Square pieceSquare, Action &action) const
 pieceSquareにある駒によって利きを受けるすべてのsquare (空白含む)について actionを実行する
 
template<class Action >
void forEachEffectOfPiece (Piece piece, Action &action) const
 
template<class Function , bool InterestEmpty>
void forEachEffectOfPtypeO (Square, PtypeO, Function &f) const
 PtypeO が Square にいると仮定した時にの利きを列挙.
 
template<Player P, class Function , bool InterestEmpty>
void forEachEffectOfPtypeO (Square, Ptype, Function &f) const
 
template<Player P>
Piece safeCaptureNotByKing (Square target, Piece king) const
 玉の素抜きなしに合法手でtargetに移動可能かを判定
 
Piece safeCaptureNotByKing (Player P, Square target) const
 
template<class Action >
void forEachEffect (Player P, Square pos, Action &a) const
 forEachEffect の Player のtemplate 引数を通常の引数にしたバージョン
 
void findEffect (Player P, Square target, PieceVector &out) const
 target に利きのあるPieceをoutに格納する
 
- Public Member Functions inherited from osl::SimpleState
 SimpleState ()
 
 SimpleState (Handicap h)
 
virtual ~SimpleState ()
 
void init ()
 盤面が空の状態に初期化
 
void init (Handicap h)
 ハンディに応じた初期状態に初期化
 
void initPawnMask ()
 
const Piece pieceOf (int num) const
 
void setPieceOf (int num, Piece p)
 
template<Player P>
const Piece kingPiece () const
 
const Piece kingPiece (Player P) const
 
template<Player P>
Square kingSquare () const
 
Square kingSquare (Player player) const
 
template<Ptype PTYPE>
const Piece nth (int n) const
 unpromote(PTYPE)のn番目の駒を帰す.
 
void setBoard (Square sq, Piece piece)
 
const PieceMaskstandMask (Player p) const
 
const PieceMaskusedMask () const
 
bool isOffBoard (int num) const
 
void clearPawn (Player pl, Square sq)
 (internal)
 
void setPawn (Player pl, Square sq)
 (internal)
 
bool isPawnMaskSet (Player player, int x) const
 
template<Player P>
bool isPawnMaskSet (int x) const
 
bool canDropPawnTo (Player player, int x) const
 xの筋に歩を打てる
 
void setPiece (Player player, Square sq, Ptype ptype)
 
void setPieceAll (Player player)
 
const Piece pieceAt (Square sq) const
 
const Piece operator[] (Square sq) const
 
const PiecegetPiecePtr (Square sq) const
 
const Piece pieceOnBoard (Square sq) const
 
bool isOnBoard (int num) const
 
int countPiecesOnStand (Player pl, Ptype ptype) const
 持駒の枚数を数える
 
template<Ptype Type>
int countPiecesOnStand (Player pl) const
 後方互換
 
bool hasPieceOnStand (Player player, Ptype ptype) const
 
template<Ptype T>
bool hasPieceOnStand (Player P) const
 
Piece nextPiece (Square cur, Offset diff) const
 diff方向にあるPiece を求める.
 
void setTurn (Player player)
 
Player turn () const
 
void changeTurn ()
 手番を変更する
 
bool isConsistent (bool show_error=true) const
 
template<bool show_error>
bool isAlmostValidMove (Move move) const
 エラー表示をするかどうかをtemplateパラメータにした高速化版
 
bool isAlmostValidMove (Move move, bool show_error=true) const
 合法手かどうかを簡単に検査する.局面に依存するチェックのみ. ルール上指せない手である可能性がある場合は,isValidMove を用いる.
 
bool isValidMove (Move move, bool show_error=true) const
 合法手かどうかを検査する. isValidMoveByRule, isAlmostValidMove をおこなう. 玉の素抜きや王手を防いでいるか, 千日手,打歩詰かどうかは検査しない.
 
bool isEmptyBetween (Square from, Square to, Offset offset, bool pieceExistsAtTo=false) const
 
bool isEmptyBetween (Square from, Square to, bool noSpaceAtTo=false) const
 
bool dump () const
 dump: 自分を cerr に表示する。abort 前などにデバッグに使う
 
const SimpleState emulateCapture (Piece from, Player new_owner) const
 from で表現されたPieceをnew_ownerの持駒にした局面を作る.
 
const SimpleState emulateHandPiece (Player from, Player to, Ptype ptype) const
 from からto に ptypeの持駒を一枚渡した局面を作る.
 
const SimpleState rotate180 () const
 
const SimpleState flipHorizontal () const
 

Private Types

typedef NumEffectState state_t
 

Private Member Functions

template<Player P, class Action >
void forEachEffect (const PieceMask &pieces, Square sq, Action &action) const
 
template<Player P, Ptype Type, class Action , Direction Dir>
void forEachEffectOfPieceDir (Square, Action &, Int2Type< false >) const
 
template<Player P, Ptype Type, class Action , Direction Dir>
void forEachEffectOfPieceDir (Square pieceSquare, Action &action, Int2Type< true >) const
 
template<Player P, Ptype Type, class Action , Direction Dir>
void forEachEffectOfPieceDir (Square pieceSquare, Action &action) const
 
template<Player P, Ptype Type, class Action , Direction Dir>
void forEachEffectOfPieceLongDir (Square, Action &, Int2Type< false >) const
 
template<Player P, Ptype Type, class Action , Direction Dir>
void forEachEffectOfPieceLongDir (Square pieceSquare, Action &action, Int2Type< true >) const
 
template<Player P, Ptype Type, class Action , Direction Dir>
void forEachEffectOfPieceLongDir (Square pieceSquare, Action &action) const
 
void doSimpleMove (Square from, Square to, int promoteMask)
 
void doDropMove (Square to, Ptype ptype)
 
void doCaptureMove (Square from, Square to, Piece target, int promoteMask)
 
template<Player P, class Function >
void doUndoSimpleMove (Player2Type< P > player, Square from, Square to, int promoteMask, Function &func)
 
template<Player P>
void prologueSimple (Player2Type< P >, Square from, Square to, int promoteMask, Piece &oldPiece, int &num, PtypeO &oldPtypeO, PtypeO &new_ptypeo, CArray< PieceMask, 2 > &pin_or_open_backup, KingMobility &king_mobility_backup, PieceMask &promoted_backup, CArray< PieceMask, 2 > &effected_mask_backup, CArray< PieceMask, 2 > &effected_changed_mask_backup, CArray< uint64_t, 2 > &king8infos_backup, MobilityTable &mobility_backup)
 
void epilogueSimple (Square from, Square to, Piece oldPiece, int num, PtypeO oldPtypeO, PtypeO newPtypeO, const CArray< PieceMask, 2 > &pin_or_open_backup, const KingMobility &king_mobility_backup, const PieceMask &promoted_backup, const CArray< PieceMask, 2 > &effected_mask_backup, const CArray< PieceMask, 2 > &effected_changed_mask_backup, const CArray< uint64_t, 2 > &king8infos_backup, const MobilityTable &mobility_backup)
 
template<Player P, class Function >
void doUndoDropMove (Player2Type< P > player, Square to, Ptype ptype, Function &func)
 
template<Player P>
void prologueDrop (Player2Type< P >, Square to, Ptype ptype, Piece &oldPiece, int &num, PtypeO &ptypeO, int &numIndex, mask_t &numMask, CArray< PieceMask, 2 > &pin_or_open_backup, KingMobility &king_mobility_backup, CArray< PieceMask, 2 > &effected_mask_backup, CArray< PieceMask, 2 > &effected_changed_mask_backup, CArray< uint64_t, 2 > &king8infos_backup, MobilityTable &mobility_backup)
 
template<Player P>
void epilogueDrop (Player2Type< P >, Square to, Ptype ptype, Piece oldPiece, int num, PtypeO ptypeO, int numIndex, mask_t numMask, const CArray< PieceMask, 2 > &pin_or_open_backup, const KingMobility &king_mobility_backup, const CArray< PieceMask, 2 > &effected_mask_backup, const CArray< PieceMask, 2 > &effected_changed_mask_backup, const CArray< uint64_t, 2 > &king8infos_backup, const MobilityTable &mobility_backup)
 
template<Player P, class Function >
void doUndoCaptureMove (Player2Type< P > player, Square from, Square to, Piece target, int promoteMask, Function &func)
 
template<Player P>
void prologueCapture (Player2Type< P >, Square from, Square to, Piece target, int promoteMask, Piece &oldPiece, PtypeO &oldPtypeO, PtypeO &capturePtypeO, PtypeO &new_ptypeo, int &num0, int &num1, int &num1Index, mask_t &num1Mask, CArray< PieceMask, 2 > &pin_or_open_backup, KingMobility &king_mobility_backup, PieceMask &promoted_backup, CArray< PieceMask, 2 > &effected_mask_backup, CArray< PieceMask, 2 > &effected_changed_mask_backup, CArray< uint64_t, 2 > &king8infos_backup, MobilityTable &mobility_backup)
 
template<Player P>
void epilogueCapture (Player2Type< P >, Square from, Square to, Piece target, Piece oldPiece, PtypeO oldPtypeO, PtypeO capturePtypeO, PtypeO newPtypeO, int num0, int num1, int num1Index, mask_t num1Mask, const CArray< PieceMask, 2 > &pin_or_open_backup, const KingMobility &king_mobility_backup, const PieceMask &promoted_backup, const CArray< PieceMask, 2 > &effected_mask_backup, const CArray< PieceMask, 2 > &effected_changed_mask_backup, const CArray< uint64_t, 2 > &king8infos_backup, const MobilityTable &mobility_backup)
 
template<Direction DIR>
void makePinOpenDir (Square target, PieceMask &pins, PieceMask const &onBoard, Player defense)
 
void recalcPinOpen (Square changed, Direction &lastDir, Player defense)
 
PieceMask makePinOpen (Square target, Player defense)
 
void makePinOpen (Player defense)
 
template<Player P>
void makeKing8Info ()
 

Private Attributes

effect::NumSimpleEffectTable effects
 
CArray< PieceMask, 2 > pieces_onboard
 
PieceMask promoted
 成駒一覧
 
CArray< PieceMask, 2 > pin_or_open
 
KingMobility king_mobility
 
CArray< uint64_t, 2 > king8infos
 

Friends

bool operator== (const NumEffectState &st1, const NumEffectState &st2)
 駒番に依存した局面(インスタンス)比較をする.
 

Additional Inherited Members

- Static Public Member Functions inherited from osl::SimpleState
template<Ptype PTYPE>
static int nthLimit ()
 
static bool isValidMoveByRule (Move move, bool show_error)
 盤面以外の部分の反則のチェック
 
- Static Public Attributes inherited from osl::SimpleState
static const bool hasPawnMask =true
 
- Protected Member Functions inherited from osl::SimpleState
PieceMaskstandMask (Player p)
 
template<bool show_error>
bool isAlmostValidDrop (Move move) const
 
template<bool show_error>
bool testValidityOtherThanEffect (Move move) const
 
- Protected Attributes inherited from osl::SimpleState
CArray< Piece, Square::SIZEboard
 
CArray< Piece, Piece::SIZEpieces
 全てのpieceが登録されている
 
CArray< PieceMask, 2 > stand_mask
 
CArray< BitXmask, 2 > pawnMask
 
CArray< CArray< char, PTYPE_SIZE-PTYPE_BASIC_MIN >, 2 > stand_count
 
Player player_to_move
 手番
 
PieceMask used_mask
 

Detailed Description

利きを持つ局面

Definition at line 30 of file numEffectState.h.

Member Typedef Documentation

◆ state_t

Definition at line 44 of file numEffectState.h.

Constructor & Destructor Documentation

◆ NumEffectState()

osl::NumEffectState::NumEffectState ( const SimpleState st = SimpleState(HIRATE))
explicit

◆ ~NumEffectState()

osl::NumEffectState::~NumEffectState ( )

Definition at line 94 of file numEffectState.cc.

Member Function Documentation

◆ allEffectAt() [1/2]

const osl::mask_t osl::NumEffectState::allEffectAt ( Player  P,
Ptype  ptype,
Square  target 
) const

◆ allEffectAt() [2/2]

template<Ptype PTYPE>
const mask_t osl::NumEffectState::allEffectAt ( Player  P,
Square  target 
) const
inline

Definition at line 293 of file numEffectState.h.

References effectSetAt(), and piecesOnBoard().

Referenced by osl::checkmate::OracleAdjust::attack(), and osl::ki2::show().

◆ anyEffectChanged()

template<Ptype PTYPE>
bool osl::NumEffectState::anyEffectChanged ( ) const
inline

Definition at line 159 of file numEffectState.h.

References changedPieces().

Referenced by osl::eval::ml::OpenMidEndingEval::updateSub().

◆ changedEffects() [1/2]

const BoardMask osl::NumEffectState::changedEffects ( ) const
inline

Definition at line 148 of file numEffectState.h.

References osl::BLACK, changedEffects(), and osl::WHITE.

Referenced by changedEffects().

◆ changedEffects() [2/2]

const BoardMask osl::NumEffectState::changedEffects ( Player  pl) const
inline

◆ changedPieces()

const NumBitmapEffect osl::NumEffectState::changedPieces ( ) const
inline

◆ checkShadow()

const PieceMask osl::NumEffectState::checkShadow ( Player  attack) const
inline

attack の駒で動くと開き王手になる可能性がある集合

Definition at line 70 of file numEffectState.h.

References osl::alt(), piecesOnBoard(), and pin_or_open.

Referenced by osl::eval::ml::CheckShadowPtype::evalOne().

◆ copyFrom() [1/2]

void osl::NumEffectState::copyFrom ( const NumEffectState src)

◆ copyFrom() [2/2]

void osl::NumEffectState::copyFrom ( const SimpleState src)

Definition at line 1048 of file numEffectState.cc.

◆ countEffect() [1/2]

int osl::NumEffectState::countEffect ( Player  player,
Square  target 
) const
inline

利きの数を数える.

targetが盤をはみ出してはいけない

Definition at line 266 of file numEffectState.h.

References osl::effect::NumBitmapEffect::countEffect(), effectSetAt(), and osl::Square::isOnBoard().

Referenced by osl::eval::ml::AttackMajorsInBase::addOne(), osl::move_probability::King5x5Ptype::addOne(), osl::move_probability::MoveInfo::adhocAdjustAttackCheckmateDefender(), osl::progress::Effect5x3WithBonus::attackEffect3(), osl::checkmate::attackProofCost(), osl::checkmate::CheckmateIfCapture::cannotCapture(), osl::move_probability::Feature::classifyEffect9(), osl::rating::CountEffect2::count(), osl::eval::ml::King25Effect::countEffectAndPieces(), osl::checkmate::ProofNumberTable::countLiberty(), osl::move_probability::CoverFork::defending(), osl::checkmate::CheckmateIfCapture::effectiveAttackCandidate0(), osl::eval::ml::King8Effect::effectState(), osl::eval::ml::King8EffectAll::effectState(), osl::eval::ml::King25EffectEach< Stage >::effectState(), osl::eval::ml::KnightHead::eval(), osl::eval::ml::Promotion37::evalOne(), osl::effect_util::SendOffSquare::find(), osl::move_probability::BlockLong::findAll(), osl::move_probability::StateInfo::findCheckmateDefender(), osl::eval::See::findEffectPieces(), osl::eval::See::findEffectPiecesAfterMove(), osl::rating::PinAttack::index(), osl::progress::Effect5x3d::makeProgress(), osl::progress::Effect5x3::makeProgressArea(), osl::rating::PinAttack::match(), osl::move_probability::LongRecapture::match(), osl::move_probability::CoverPawn::match(), osl::move_probability::AttackFromOpposingSliders::match(), osl::checkmate::King8Info::moveCandidateDir(), osl::effect_util::SendOffSquare::onlyOneSupport(), osl::eval::ml::King8EffectBase::MakeEffectStateSimple::operator()(), osl::eval::ml::King8EffectBase::MakeEffectStateDefense::operator()(), osl::progress::ml::NewProgress::progressOne(), and osl::progress::ml::NewProgress::promotion37One().

◆ countEffect() [2/2]

int osl::NumEffectState::countEffect ( Player  player,
Square  target,
PieceMask  pins 
) const
inline

利きの数を数える.

targetが盤をはみ出してはいけない

Parameters
pinsこの駒の利きは数えない

Definition at line 280 of file numEffectState.h.

References osl::container::PieceMask64::countBit(), osl::effect::NumBitmapEffect::countEffect(), effectSetAt(), and osl::Square::isOnBoard().

◆ doCaptureMove()

void osl::NumEffectState::doCaptureMove ( Square  from,
Square  to,
Piece  target,
int  promoteMask 
)
private

Definition at line 259 of file numEffectState.cc.

References osl::alt(), osl::BLACK, osl::newPtypeO(), osl::PAWN, and osl::Piece::ptype().

◆ doDropMove()

void osl::NumEffectState::doDropMove ( Square  to,
Ptype  ptype 
)
private

Definition at line 292 of file numEffectState.cc.

References osl::BLACK, and osl::PAWN.

◆ doSimpleMove()

void osl::NumEffectState::doSimpleMove ( Square  from,
Square  to,
int  promoteMask 
)
private

Definition at line 231 of file numEffectState.cc.

References osl::BLACK, and osl::newPtypeO().

◆ doUndoCaptureMove()

template<osl::Player P, typename Function >
void osl::NumEffectState::doUndoCaptureMove ( Player2Type< P >  player,
Square  from,
Square  to,
Piece  target,
int  promoteMask,
Function &  func 
)
private

Definition at line 1125 of file numEffectState.h.

References osl::alt(), osl::newPtypeO(), osl::PAWN, and osl::Piece::ptype().

Referenced by makeUnmakeMove().

◆ doUndoDropMove()

template<osl::Player P, typename Function >
void osl::NumEffectState::doUndoDropMove ( Player2Type< P >  player,
Square  to,
Ptype  ptype,
Function &  func 
)
private

Definition at line 1085 of file numEffectState.h.

References osl::PAWN.

Referenced by makeUnmakeMove().

◆ doUndoSimpleMove()

template<osl::Player P, typename Function >
void osl::NumEffectState::doUndoSimpleMove ( Player2Type< P >  player,
Square  from,
Square  to,
int  promoteMask,
Function &  func 
)
private

◆ effectedChanged()

const PieceMask osl::NumEffectState::effectedChanged ( Player  pl) const
inline

前の指手でeffectedMask(pl)が変化したか.

取られた駒は現在の実装ではリストされないようだ.

Definition at line 137 of file numEffectState.h.

References osl::effect::NumSimpleEffectTable::effected_changed_mask, and effects.

Referenced by isConsistent(), and osl::eval::ml::NonPawnAttackedPtype::updateChanged().

◆ effectedMask()

const PieceMask osl::NumEffectState::effectedMask ( Player  pl) const
inline

◆ effectSetAt()

const NumBitmapEffect osl::NumEffectState::effectSetAt ( Square  sq) const
inline

◆ epilogueCapture()

template<osl::Player P>
template void osl::NumEffectState::epilogueCapture ( Player2Type< P >  ,
Square  from,
Square  to,
Piece  target,
Piece  oldPiece,
PtypeO  oldPtypeO,
PtypeO  capturePtypeO,
PtypeO  newPtypeO,
int  num0,
int  num1,
int  num1Index,
mask_t  num1Mask,
const CArray< PieceMask, 2 > &  pin_or_open_backup,
const KingMobility king_mobility_backup,
const PieceMask promoted_backup,
const CArray< PieceMask, 2 > &  effected_mask_backup,
const CArray< PieceMask, 2 > &  effected_changed_mask_backup,
const CArray< uint64_t, 2 > &  king8infos_backup,
const MobilityTable mobility_backup 
)
private

◆ epilogueDrop()

template<osl::Player P>
template void osl::NumEffectState::epilogueDrop ( Player2Type< P >  ,
Square  to,
Ptype  ptype,
Piece  oldPiece,
int  num,
PtypeO  ptypeO,
int  numIndex,
mask_t  numMask,
const CArray< PieceMask, 2 > &  pin_or_open_backup,
const KingMobility king_mobility_backup,
const CArray< PieceMask, 2 > &  effected_mask_backup,
const CArray< PieceMask, 2 > &  effected_changed_mask_backup,
const CArray< uint64_t, 2 > &  king8infos_backup,
const MobilityTable mobility_backup 
)
private

Definition at line 502 of file numEffectState.cc.

References osl::Piece::EMPTY(), and osl::PTYPE_BASIC_MIN.

◆ epilogueSimple()

void osl::NumEffectState::epilogueSimple ( Square  from,
Square  to,
Piece  oldPiece,
int  num,
PtypeO  oldPtypeO,
PtypeO  newPtypeO,
const CArray< PieceMask, 2 > &  pin_or_open_backup,
const KingMobility king_mobility_backup,
const PieceMask promoted_backup,
const CArray< PieceMask, 2 > &  effected_mask_backup,
const CArray< PieceMask, 2 > &  effected_changed_mask_backup,
const CArray< uint64_t, 2 > &  king8infos_backup,
const MobilityTable mobility_backup 
)
private

◆ findAttackAt()

template<Ptype PTYPE>
const Piece osl::NumEffectState::findAttackAt ( Player  attack,
Square  target 
) const
inline

return a piece s.t.

owner == attack, ptype == PTYPE, has effect on target. return Piece::EMPTY() otherwise

Definition at line 503 of file numEffectState.h.

References osl::Piece::EMPTY(), and osl::SimpleState::pieceOf().

Referenced by osl::checkmate::OracleAdjust::attack(), osl::rating::DefenseKing8::blocking(), osl::rating::Block::count(), and osl::rating::PatternBlock::find().

◆ findAttackAtStrict()

template<Ptype PTYPE>
const Piece osl::NumEffectState::findAttackAtStrict ( Player  attack,
Square  target 
) const
inline

◆ findAttackNotBy()

const Piece osl::NumEffectState::findAttackNotBy ( Player  P,
Square  square,
const PieceMask ignore 
) const
inline

◆ findCheapAttack()

const Piece osl::NumEffectState::findCheapAttack ( Player  P,
Square  square 
) const
inline

◆ findCheapAttackNotBy()

const Piece osl::NumEffectState::findCheapAttackNotBy ( Player  P,
Square  square,
const PieceMask ignore 
) const
inline
Parameters
P- 利きをつけている側のプレイヤ
square- 調査する場所
Returns
利きを付けている中で安そうな駒 (複数の場合でもEMPTYにはしない)

Definition at line 569 of file numEffectState.h.

References effectSetAt(), osl::SimpleState::pieces, piecesOnBoard(), and selectCheapPiece().

◆ findCheckPiece()

template<Player P>
bool osl::NumEffectState::findCheckPiece ( Piece attack_piece) const
inline

王手駒を探す

Returns
王手かどうか
Parameters
attack_piece一つの駒による王手の場合はattck_pieceにその駒を入れる 複数の駒による王手の場合はPiece::EMPTY()を入れる
P(template)

Definition at line 593 of file numEffectState.h.

References osl::SimpleState::kingSquare().

◆ findEffect()

void osl::NumEffectState::findEffect ( Player  P,
Square  target,
PieceVector out 
) const

target に利きのあるPieceをoutに格納する

Definition at line 1118 of file numEffectState.cc.

Referenced by osl::effect_util::AdditionalEffect::count(), osl::effect_util::ShadowEffect::count(), and osl::effect_util::AdditionalEffect::find().

◆ findLongAttackAt() [1/4]

const Piece osl::NumEffectState::findLongAttackAt ( Piece  piece,
Direction  d 
) const
inline

Definition at line 542 of file numEffectState.h.

References findLongAttackAt(), osl::Piece::isPiece(), and osl::Piece::owner().

◆ findLongAttackAt() [2/4]

const Piece osl::NumEffectState::findLongAttackAt ( Player  owner,
int  piece,
Direction  d 
) const
inline

pieceのd方向から長い利きがある場合にその駒を返す。

Parameters
dpiece からみた向き

Definition at line 526 of file numEffectState.h.

References osl::BLACK, osl::effect::NumSimpleEffectTable::effectedNumTable, effects, osl::Piece::EMPTY(), osl::EMPTY_NUM, osl::inverse(), and osl::SimpleState::pieceOf().

Referenced by findLongAttackAt(), findLongAttackAt(), and findLongAttackAt().

◆ findLongAttackAt() [3/4]

const Piece osl::NumEffectState::findLongAttackAt ( Player  owner,
Piece  piece,
Direction  d 
) const
inline

◆ findLongAttackAt() [4/4]

const Piece osl::NumEffectState::findLongAttackAt ( Square  square,
Direction  d 
) const
inline

Definition at line 547 of file numEffectState.h.

References findLongAttackAt(), and osl::SimpleState::pieceOnBoard().

◆ findThreatenedPiece()

const osl::Piece osl::NumEffectState::findThreatenedPiece ( Player  P) const

◆ forEachEffect() [1/4]

template<Player P, class Action >
void osl::NumEffectState::forEachEffect ( const PieceMask pieces,
Square  sq,
Action &  action 
) const
inlineprivate

◆ forEachEffect() [2/4]

template<class Action >
void osl::NumEffectState::forEachEffect ( Player  P,
Square  pos,
Action &  a 
) const
inline

forEachEffect の Player のtemplate 引数を通常の引数にしたバージョン

Parameters
P探す対象の駒の所有者
posに利きのある駒を探す

Definition at line 888 of file numEffectState.h.

References osl::BLACK.

◆ forEachEffect() [3/4]

template<Player P, class Action >
void osl::NumEffectState::forEachEffect ( Square  sq,
Action &  action 
) const
inline

sq への利きを持つ各駒に関して処理を行う.

Parameters
actionたとえば AlwaysMoveAction

Definition at line 784 of file numEffectState.h.

References effectSetAt(), and piecesOnBoard().

◆ forEachEffect() [4/4]

template<Player P, class Action >
void osl::NumEffectState::forEachEffect ( Square  sq,
Action &  action,
const PieceMask pin 
) const
inline

sq にある駒を取る move を生成して action の member を呼び出す.

Parameters
pin無視する駒
actionたとえば AlwaysMoveAction

Definition at line 795 of file numEffectState.h.

References effectSetAt(), and piecesOnBoard().

◆ forEachEffectNotBy()

template<Player P, class Action >
void osl::NumEffectState::forEachEffectNotBy ( Square  sq,
Piece  piece,
Action &  action 
) const
inline

sq に移動する move を生成して action の member を呼び出す

Parameters
actionたとえば AlwayMoveAction
pieceこれ以外の駒を使う

Definition at line 808 of file numEffectState.h.

References effectSetAt(), osl::Piece::number(), osl::SimpleState::pieces, and piecesOnBoard().

◆ forEachEffectOfPiece() [1/2]

template<class Action >
void osl::NumEffectState::forEachEffectOfPiece ( Piece  piece,
Action &  action 
) const

◆ forEachEffectOfPiece() [2/2]

template<osl::Player P, osl::Ptype Type, class Action >
void osl::NumEffectState::forEachEffectOfPiece ( Square  pieceSquare,
Action &  action 
) const

pieceSquareにある駒によって利きを受けるすべてのsquare (空白含む)について actionを実行する

SimpleState より移植: ImmediateAddSupportがなければ消せる

Definition at line 1224 of file numEffectState.h.

Referenced by osl::rating::ImmediateAddSupport::index(), and osl::rating::ImmediateAddSupport::match().

◆ forEachEffectOfPieceDir() [1/3]

template<Player P, Ptype Type, class Action , Direction Dir>
void osl::NumEffectState::forEachEffectOfPieceDir ( Square  pieceSquare,
Action &  action 
) const
inlineprivate

Definition at line 824 of file numEffectState.h.

◆ forEachEffectOfPieceDir() [2/3]

template<Player P, Ptype Type, class Action , Direction Dir>
void osl::NumEffectState::forEachEffectOfPieceDir ( Square  pieceSquare,
Action &  action,
Int2Type< true >   
) const
inlineprivate

Definition at line 818 of file numEffectState.h.

References osl::SimpleState::pieceAt().

◆ forEachEffectOfPieceDir() [3/3]

template<Player P, Ptype Type, class Action , Direction Dir>
void osl::NumEffectState::forEachEffectOfPieceDir ( Square  ,
Action &  ,
Int2Type< false >   
) const
inlineprivate

Definition at line 816 of file numEffectState.h.

◆ forEachEffectOfPieceLongDir() [1/3]

template<Player P, Ptype Type, class Action , Direction Dir>
void osl::NumEffectState::forEachEffectOfPieceLongDir ( Square  pieceSquare,
Action &  action 
) const
inlineprivate

Definition at line 841 of file numEffectState.h.

◆ forEachEffectOfPieceLongDir() [2/3]

template<Player P, Ptype Type, class Action , Direction Dir>
void osl::NumEffectState::forEachEffectOfPieceLongDir ( Square  pieceSquare,
Action &  action,
Int2Type< true >   
) const
inlineprivate

◆ forEachEffectOfPieceLongDir() [3/3]

template<Player P, Ptype Type, class Action , Direction Dir>
void osl::NumEffectState::forEachEffectOfPieceLongDir ( Square  ,
Action &  ,
Int2Type< false >   
) const
inlineprivate

Definition at line 828 of file numEffectState.h.

◆ forEachEffectOfPtypeO() [1/2]

template<Player P, class Function , bool InterestEmpty>
void osl::NumEffectState::forEachEffectOfPtypeO ( Square  ,
Ptype  ,
Function &  f 
) const

◆ forEachEffectOfPtypeO() [2/2]

template<class Function , bool InterestEmpty>
void osl::NumEffectState::forEachEffectOfPtypeO ( Square  ,
PtypeO  ,
Function &  f 
) const

PtypeO が Square にいると仮定した時にの利きを列挙.

盤面が実際と違うと長い利きが不正確になる

Parameters
InterestEmpty空白のマスに興味があるか

◆ forEachOnBoard()

template<Player P, Ptype T, typename F >
void osl::NumEffectState::forEachOnBoard ( F &  func) const
inline

T は isBasic でなくても動くが unpromote(T) の結果と同じ.

Definition at line 727 of file numEffectState.h.

References osl::SimpleState::pieceOf(), and piecesOnBoard().

◆ forEachOnBoardPtypeStrict()

template<Player P, Ptype T, typename F >
void osl::NumEffectState::forEachOnBoardPtypeStrict ( F &  func) const
inline

T の成不成を区別

Definition at line 739 of file numEffectState.h.

References osl::PieceMask::getMask(), osl::isPromoted(), osl::SimpleState::pieceOf(), piecesOnBoard(), and promoted.

◆ generateAllUnsafe()

void osl::NumEffectState::generateAllUnsafe ( MoveVector out) const

自殺を含めてすべての手を生成

Definition at line 1081 of file numEffectState.cc.

References osl::move_generator::AllMoves< Action >::generate().

◆ generateLegal()

void osl::NumEffectState::generateLegal ( MoveVector moves) const

全ての合法手を生成する.

玉の素抜きや打歩詰の確認をする. ただし, 打歩詰め絡み以外では有利にはならない手 (Move::ignoredUnpromote)は生成しない.

Definition at line 1086 of file numEffectState.cc.

References osl::FixedCapacityVector< T, Capacity >::begin(), osl::FixedCapacityVector< T, Capacity >::end(), osl::GenerateEscapeKing::generate(), and osl::GenerateAllMoves::generate().

Referenced by osl::rating::BradleyTerry::addSquare(), and osl::move_probability::FeatureSet::generateRating().

◆ generateWithFullUnpromotions()

void osl::NumEffectState::generateWithFullUnpromotions ( MoveVector moves) const

打歩詰め絡み以外では有利にはならない手も含め, 全ての合法手を生成す る(Move::ignoredUnpromoteも生成する).

玉の素抜きや打歩詰の確認 をする.

Definition at line 1105 of file numEffectState.cc.

References osl::Move::hasIgnoredUnpromote(), osl::FixedCapacityVector< T, Capacity >::push_back(), osl::FixedCapacityVector< T, Capacity >::size(), and osl::Move::unpromote().

Referenced by osl::record::KanjiMove::strToMove().

◆ hasChangedEffects()

bool osl::NumEffectState::hasChangedEffects ( ) const
inline

◆ hasEffectAt() [1/4]

bool osl::NumEffectState::hasEffectAt ( Player  P,
Square  target,
Piece attackerPiece 
) const
inline

Definition at line 597 of file numEffectState.h.

References osl::BLACK.

◆ hasEffectAt() [2/4]

bool osl::NumEffectState::hasEffectAt ( Player  player,
Square  target 
) const
inline

対象とするマスにあるプレイヤーの利きがあるかどうか.

Parameters
player攻撃側
target対象のマス

Definition at line 335 of file numEffectState.h.

References effectSetAt(), osl::PieceMask::getMask(), osl::Square::isOnBoard(), and osl::effect::NumBitmapEffect::playerEffectMask().

◆ hasEffectAt() [3/4]

template<Player P>
bool osl::NumEffectState::hasEffectAt ( Square  target) const
inline

対象とするマスにあるプレイヤーの利きがあるかどうか.

Parameters
player攻撃側
target対象のマス

Definition at line 324 of file numEffectState.h.

References effectSetAt(), osl::PieceMask::getMask(), and osl::Square::isOnBoard().

Referenced by osl::eval::ml::KnightFork::accumulate(), osl::eval::ml::AttackMajorsInBase::addOne(), osl::move_probability::King5x5Ptype::addOne(), osl::eval::ml::KnightCheck::canCheck(), osl::enter_king::EnterKing::canDeclareWin(), osl::enter_king::EnterKing::canDeclareWin(), osl::eval::ml::GoldFeatures::canMoveToSide(), osl::eval::ml::GoldFeatures::canRetreat(), osl::eval::ml::SilverFeatures::canRetreat(), osl::rating::DefenseKing8::count(), osl::mobility::countMobilityBoth(), osl::checkmate::CheckmateIfCapture::effectiveAttackCandidate0(), osl::eval::ml::King25EffectEach< Stage >::effectState(), osl::eval::ml::BishopHead::eval(), osl::eval::ml::BishopBishopPiece::eval(), osl::eval::ml::RookRookPiece::eval(), osl::eval::ml::PinPtypeAll::evalOne(), osl::eval::ml::MajorGoldSilverAttacked< Opening >::evalOne(), osl::eval::ml::KnightFork::evalOne(), osl::eval::ml::GoldFeatures::evalOne(), osl::move_probability::StateInfo::findCheckmateDefender(), osl::eval::ml::BishopRookFork::findDropInLine(), osl::rating::BadLanceGroup::findMatch(), osl::rating::ChaseGroup::findMatch(), osl::checkmate::Dfpn::generateEscape(), osl::move_generator::PieceOnBoard< Action, noCapturePromote >::generatePiece(), osl::move_generator::PieceOnBoard< Action, noCapturePromote >::generatePiecePtype(), osl::rating::FeatureSet::generateRating(), osl::checkmate::King8Info::hasEffectMask(), osl::checkmate::Dfpn::hasEscapeMove(), inCheck(), osl::eval::ml::NonPawnAttackedPtypePair::index1(), inUnblockableCheck(), osl::eval::ml::KingXBlockedBase::isBlocked(), osl::move_classifier::PawnDropCheckmate< P >::isMember(), osl::move_probability::MoveFromOpposingSliders::longPtype(), osl::move_probability::BlockLong::makeLongAttackOne(), osl::rating::BadLance::match(), osl::rating::CheckmateIfCapture::match(), osl::rating::ToSupported::match(), osl::rating::Chase::match(), osl::move_probability::PromotionBySacrifice::match(), osl::move_probability::EscapeThreatened::match(), osl::eval::ml::SilverFork::matchGold(), osl::eval::ml::SilverFork::matchRook(), NumEffectState(), osl::effect_util::SendOffSquare::onlyOneSupport(), and osl::eval::ml::BishopRookFork::testCenter().

◆ hasEffectAt() [4/4]

template<Player P>
bool osl::NumEffectState::hasEffectAt ( Square  target,
Piece attackerPiece 
) const
inline
Parameters
P(template)- 利きをつけている側のプレイヤ
target- 利きをつけられた場所
attackerPiece- multiple attackの場合はPiece::EMPTY() そうでないなら利きをつけている駒を返す

mask|=0x8000000000000000ll; if((mask&(mask-1))!=0x8000000000000000ll) なら1つのif文で済む

Definition at line 611 of file numEffectState.h.

References effectSetAt(), osl::Piece::EMPTY(), osl::PieceMask::getMask(), osl::SimpleState::pieceOf(), and piecesOnBoard().

◆ hasEffectByNotPinned()

bool osl::NumEffectState::hasEffectByNotPinned ( Player  pl,
Square  target 
) const
inline

pinされている駒以外からの利きがある.

Definition at line 428 of file numEffectState.h.

References osl::PieceMask::any(), effectSetAt(), osl::Square::isOnBoard(), and piecesOnBoard().

◆ hasEffectByNotPinnedAndKing()

bool osl::NumEffectState::hasEffectByNotPinnedAndKing ( Player  pl,
Square  target 
) const
inline

{pinされている駒, 玉以外}からの利きがある.

Definition at line 419 of file numEffectState.h.

References osl::PieceMask::any(), osl::PieceMask::clearBit(), effectSetAt(), osl::Square::isOnBoard(), osl::KING, and piecesOnBoard().

◆ hasEffectByPiece()

bool osl::NumEffectState::hasEffectByPiece ( Piece  attack,
Square  target 
) const
inline

◆ hasEffectByPtype()

template<Ptype PTYPE>
bool osl::NumEffectState::hasEffectByPtype ( Player  attack,
Square  target 
) const
inline

◆ hasEffectByPtypeStrict()

template<Ptype PTYPE>
bool osl::NumEffectState::hasEffectByPtypeStrict ( Player  attack,
Square  target 
) const
inline

◆ hasEffectByWithRemove() [1/2]

bool osl::NumEffectState::hasEffectByWithRemove ( Player  player,
Square  target,
Square  removed 
) const
inline

Definition at line 490 of file numEffectState.h.

References osl::BLACK.

◆ hasEffectByWithRemove() [2/2]

template<Player P>
bool osl::NumEffectState::hasEffectByWithRemove ( Square  target,
Square  removed 
) const

◆ hasEffectIf()

bool osl::NumEffectState::hasEffectIf ( PtypeO  ptypeo,
Square  attacker,
Square  target 
) const
inline

attackerにptypeoの駒がいると仮定した場合にtargetに利きがあるかどうか を stateをupdateしないで確かめる.

targetSquareは空白でも良い 盤上の駒を動かす事を検討しているときはに, 自分自身の陰に入って利かないと見なされることがある

Definition at line 465 of file numEffectState.h.

References osl::Board_Table, osl::PtypeTable::getEffect(), osl::BoardTable::getShortOffset(), osl::EffectContent::hasEffect(), osl::EffectContent::hasUnblockableEffect(), osl::SimpleState::isEmptyBetween(), osl::EffectContent::offset(), and osl::Ptype_Table.

Referenced by osl::eval::ml::MajorCheckWithCapture::addOne(), osl::move_probability::MoveInfo::adhocAdjustBreakThreatmate(), osl::move_probability::MoveInfo::adhocAdjustKeepCheckmateDefender(), osl::move_probability::KingBlockade::blockAll(), osl::move_probability::CoverFork::defending(), osl::rating::ImmediateAddSupport::Test::doAction(), osl::move_action::NoAddEffectFilter< OrigAction >::dropMove(), osl::rating::ChaseGroup::findMatch(), osl::rating::ImmediateEscapeGroup::findMatchWithoutProgress(), osl::effect_util::Neighboring8Direct::hasEffectFromTo(), osl::rating::PinAttack::index(), osl::rating::ImmediateAddSupport::index(), osl::rating::Threatmate::isCandidate(), osl::move_probability::BreakThreatmate::isDefendingThreatmate(), osl::move_classifier::DirectCheck< P >::isMember(), osl::rating::PinAttack::match(), osl::rating::Chase::match(), osl::rating::ImmediateEscape::match(), osl::move_probability::LureDefender::match(), osl::move_probability::CoverPawn::match(), osl::move_probability::KingBlockade::match(), osl::move_probability::PromotionBySacrifice::match(), osl::move_probability::EscapeThreatened::match(), osl::move_probability::AttackToOpposingSliders::match(), osl::move_probability::AttackKing8Long::match(), osl::move_action::NoAddEffectFilter< OrigAction >::simpleMove(), and osl::move_action::NoAddEffectFilter< OrigAction >::unknownMove().

◆ hasEffectInDirection()

template<Direction Dir, Player P>
bool osl::NumEffectState::hasEffectInDirection ( Square  to) const
inline

◆ hasEffectNotBy()

bool osl::NumEffectState::hasEffectNotBy ( Player  player,
Piece  piece,
Square  target 
) const
inline

対象とするマスにあるプレイヤーの(ただしある駒以外)利きがあるかどうか.

Parameters
player攻撃側
piece攻撃側の駒
target対象のマス

Definition at line 409 of file numEffectState.h.

References effectSetAt(), osl::Piece::number(), osl::Piece::owner(), pieces_onboard, and piecesOnBoard().

Referenced by osl::eval::ml::AttackMajorsInBase::addOne(), osl::rating::Threatmate::captureForKnightCheck(), osl::checkmate::CheckmateIfCapture::effectiveAttackCandidate0(), osl::eval::ml::BishopRookFork::findDropInLine(), osl::checkmate::Dfpn::generateEscape(), and osl::eval::ml::BishopRookFork::testCenter().

◆ hasLongEffectAt()

template<Ptype PTYPE>
bool osl::NumEffectState::hasLongEffectAt ( Player  P,
Square  to 
) const
inline

あるマスにPTYPEの長い利きがあるかどうか.

Definition at line 346 of file numEffectState.h.

References osl::BISHOP, osl::LANCE, and osl::ROOK.

Referenced by osl::eval::ml::MajorCheckWithCapture::addOne().

◆ hasMultipleEffectAt()

bool osl::NumEffectState::hasMultipleEffectAt ( Player  player,
Square  target 
) const
inline

二つ以上の駒から利きがある.

そもそも利きがない場合も呼ばれる

Parameters
player攻撃側
target対象のマス

Definition at line 439 of file numEffectState.h.

References effectSetAt(), osl::PieceMask::getMask(), osl::effect::NumBitmapEffect::playerEffect(), and osl::effect::NumBitmapEffect::playerEffectMask().

◆ Iking8Info()

uint64_t osl::NumEffectState::Iking8Info ( Player  king) const
inline

◆ inCheck() [1/2]

bool osl::NumEffectState::inCheck ( ) const
inline

手番の玉が王手状態

Definition at line 98 of file numEffectState.h.

References inCheck(), and osl::SimpleState::turn().

Referenced by inCheck().

◆ inCheck() [2/2]

bool osl::NumEffectState::inCheck ( Player  P) const
inline

◆ inUnblockableCheck()

bool osl::NumEffectState::inUnblockableCheck ( Player  target) const
inline

target の王に合駒可能でない王手がかかっているかどうか.

  • 両王手 => 真
  • unblockable な利きだけ => 真
  • blockable な利きだけ => 偽
  • 王手でない => 偽 2014/03

Definition at line 107 of file numEffectState.h.

References osl::alt(), osl::Piece::EMPTY(), osl::PtypeTable::getEffect(), hasEffectAt(), osl::EffectContent::hasUnblockableEffect(), osl::SimpleState::kingSquare(), osl::Ptype_Table, osl::Piece::ptypeO(), and osl::Piece::square().

Referenced by osl::checkmate::ProofPieces::leaf(), and osl::checkmate::Dfpn::Node::setCheckmateDefense().

◆ isAlmostValidMove() [1/2]

template<bool show_error>
bool osl::NumEffectState::isAlmostValidMove ( Move  move) const

合法手かどうかを簡単に検査する.局面に依存するチェックのみ. ルール上指せない手である可能性がある場合は,isValidMove を用いる.

Pをtemplate引数にできると少しは速くなりそう 局面に依存する検査でも,玉の素抜きや王手を防いでいるか, 千日手,打歩詰かどうかは検査しない.

Parameters
showError(template)- falseを返す時には何か表示する.
move- 手

Definition at line 823 of file numEffectState.cc.

References osl::Move::from(), osl::Move::isNormal(), osl::Square::isPieceStand(), osl::Move::isValid(), osl::Move::player(), and osl::Move::to().

Referenced by osl::checkmate::Dfpn::analyze(), osl::checkmate::OracleAdjust::attack(), makeUnmakeMove(), and osl::eval::See::seeInternal().

◆ isAlmostValidMove() [2/2]

bool osl::NumEffectState::isAlmostValidMove ( Move  move,
bool  show_error = true 
) const

Definition at line 846 of file numEffectState.cc.

◆ isCheck()

bool osl::NumEffectState::isCheck ( Move  move) const

Definition at line 1058 of file numEffectState.cc.

Referenced by osl::RepetitionCounter::push().

◆ isConsistent() [1/2]

bool osl::NumEffectState::isConsistent ( bool  showError = true) const

◆ isConsistent() [2/2]

bool osl::NumEffectState::isConsistent ( const NumEffectState prev,
Move  moved,
bool  show_error = true 
) const

◆ isDirectCheck()

bool osl::NumEffectState::isDirectCheck ( Move  move) const

◆ isOnBoardNum()

bool osl::NumEffectState::isOnBoardNum ( int  num) const
inline

Definition at line 170 of file numEffectState.h.

References osl::BLACK, piecesOnBoard(), osl::PieceMask::test(), and osl::WHITE.

◆ isOpenCheck()

bool osl::NumEffectState::isOpenCheck ( Move  move) const

◆ isPawnDropCheckmate()

bool osl::NumEffectState::isPawnDropCheckmate ( Move  move) const

Definition at line 1063 of file numEffectState.cc.

◆ isSafeMove()

bool osl::NumEffectState::isSafeMove ( Move  move) const

Definition at line 1053 of file numEffectState.cc.

◆ king8Info()

const osl::checkmate::King8Info osl::NumEffectState::king8Info ( Player  king) const

◆ kingMobilityAbs()

Square osl::NumEffectState::kingMobilityAbs ( Player  p,
Direction  d 
) const
inline

◆ kingMobilityOfPlayer()

Square osl::NumEffectState::kingMobilityOfPlayer ( Player  p,
Direction  d 
) const
inline

玉がd方向にどこまで動けるかを返す

Parameters
p注目する玉のプレイヤ
dpiece からみた向き

Definition at line 192 of file numEffectState.h.

References osl::BLACK, osl::inverse(), and kingMobilityAbs().

Referenced by osl::effect_util::Neighboring8Direct::Table::hasEffectOrAdditional().

◆ longEffectAt() [1/4]

template<Ptype PTYPE>
const mask_t osl::NumEffectState::longEffectAt ( Square  target) const
inline

◆ longEffectAt() [2/4]

const mask_t osl::NumEffectState::longEffectAt ( Square  target) const
inline

Definition at line 306 of file numEffectState.h.

References effectSetAt(), and osl::effect::NumBitmapEffect::selectLong().

◆ longEffectAt() [3/4]

template<Ptype PTYPE>
const mask_t osl::NumEffectState::longEffectAt ( Square  target,
Player  owner 
) const
inline

Definition at line 302 of file numEffectState.h.

References osl::PieceMask::getMask(), and piecesOnBoard().

◆ longEffectAt() [4/4]

const mask_t osl::NumEffectState::longEffectAt ( Square  target,
Player  owner 
) const
inline

Definition at line 310 of file numEffectState.h.

References osl::PieceMask::getMask(), longEffectAt(), and piecesOnBoard().

◆ longEffectChanged()

template<Ptype PTYPE>
bool osl::NumEffectState::longEffectChanged ( ) const
inline

Definition at line 155 of file numEffectState.h.

References changedPieces().

Referenced by osl::eval::ml::OpenMidEndingEval::updateSub().

◆ longEffectNumTable()

const EffectedNumTable & osl::NumEffectState::longEffectNumTable ( ) const
inline

◆ makeKing8Info()

template<osl::Player P>
template void osl::NumEffectState::makeKing8Info< WHITE > ( )
private

Definition at line 50 of file numEffectState.cc.

References osl::alt(), and king8infos.

◆ makeMove()

void osl::NumEffectState::makeMove ( Move  move)

◆ makeMovePass()

void osl::NumEffectState::makeMovePass ( )
inline

◆ makePinOpen() [1/2]

void osl::NumEffectState::makePinOpen ( osl::Player  defense)
private

Definition at line 900 of file numEffectState.cc.

◆ makePinOpen() [2/2]

osl::PieceMask osl::NumEffectState::makePinOpen ( osl::Square  target,
osl::Player  defense 
)
private

Definition at line 883 of file numEffectState.cc.

References osl::alt(), and osl::Square::isPieceStand().

Referenced by NumEffectState().

◆ makePinOpenDir()

template<Direction DIR>
void osl::NumEffectState::makePinOpenDir ( Square  target,
PieceMask pins,
PieceMask const &  onBoard,
Player  defense 
)
inlineprivate

◆ makeUnmakeMove() [1/2]

template<class Function >
void osl::NumEffectState::makeUnmakeMove ( Move  move,
Function &  f 
)
inline

◆ makeUnmakeMove() [2/2]

template<Player P, class Function >
void osl::NumEffectState::makeUnmakeMove ( Player2Type< P >  player,
Move  move,
Function &  f 
)
inline

◆ makeUnmakePass()

template<class Function >
void osl::NumEffectState::makeUnmakePass ( Function &  f)
inline

Definition at line 676 of file numEffectState.h.

References osl::SimpleState::changeTurn(), and osl::Square::STAND().

Referenced by makeUnmakeMove().

◆ mobilityOf() [1/2]

Square osl::NumEffectState::mobilityOf ( Direction  d,
int  num 
) const
inline

◆ mobilityOf() [2/2]

Square osl::NumEffectState::mobilityOf ( Direction  d,
Piece  p 
) const
inline

Definition at line 179 of file numEffectState.h.

References mobilityOf(), and osl::Piece::number().

◆ piecesOnBoard()

const PieceMask & osl::NumEffectState::piecesOnBoard ( Player  p) const
inline

Definition at line 63 of file numEffectState.h.

References pieces_onboard.

Referenced by osl::eval::ml::PiecePairKing::add(), osl::eval::ml::MajorCheckWithCapture::addOne(), osl::eval::ml::PiecePairKing::addSub(), allEffectAt(), checkShadow(), osl::eval::ml::King25Effect::countEffectAndPieces(), osl::progress::Effect5x3WithBonus::countEffectPieces(), osl::checkmate::CheckmateIfCapture::effectiveAttackCandidate0(), osl::eval::ml::KingPieceRelativeNoSupport::eval(), osl::eval::ml::RookPromoteDefense::eval(), osl::eval::ml::KnightFork::eval(), osl::eval::ml::NonPawnAttackedPtype::eval(), osl::eval::ml::BishopRookFork::eval(), osl::eval::ml::NonPawnAttacked::eval(), osl::eval::ml::PiecePairKing::evalOne(), osl::eval::ml::NonPawnAttackedPtypePair::evalOne(), osl::eval::ml::KnightFork::evalOne(), osl::eval::ml::King25EmptySquareNoEffect::evalOne(), osl::eval::ml::King25EmptySquareNoEffect::evalOne(), osl::eval::ml::PromotedMinorPieces::evalOne(), osl::eval::ml::King25Effect3::evalOne(), osl::eval::ml::King25EffectCountCombination::evalOne(), osl::eval::ml::KnightFork::evalWithUpdate(), osl::eval::ml::KingPieceRelativeNoSupport::evalWithUpdate(), osl::eval::ml::NonPawnAttackedPtype::evalWithUpdateBang(), osl::eval::ml::NonPawnAttacked::evalWithUpdateBang(), osl::move_probability::ToEffect::find(), findAttackNotBy(), findCheapAttack(), findCheapAttackNotBy(), forEachEffect(), forEachEffect(), forEachEffectNotBy(), forEachOnBoard(), forEachOnBoardPtypeStrict(), osl::effect_util::AdditionalEffect::hasEffect(), hasEffectAt(), hasEffectByNotPinned(), hasEffectByNotPinnedAndKing(), hasEffectInDirection(), hasEffectNotBy(), osl::rating::ImmediateAddSupport::index(), isConsistent(), isOnBoardNum(), longEffectAt(), osl::checkmate::King8Info::make(), osl::move_probability::CoverFork::match(), osl::move_probability::ToEffectLong::match(), pin(), recalcPinOpen(), osl::eval::ml::PiecePairKing::sub(), osl::progress::ml::NewProgress::updateAttack5x5Pieces(), osl::eval::ml::NonPawnAttackedPtype::updateChanged(), osl::eval::ml::NonPawnAttacked::updateEffectChanged(), osl::progress::ml::NewProgress::updateNonPawnAttackedPtypePairOne(), and osl::progress::ml::NewProgress::updatePawnFacing().

◆ pin()

const PieceMask osl::NumEffectState::pin ( Player  king) const
inline

◆ pinAttacker() [1/2]

template<Player P>
Piece osl::NumEffectState::pinAttacker ( Piece  pinned) const
inline

Pのpinされた駒から,そのpinの原因となっている長い利きを持つ駒を得る.

Definition at line 240 of file numEffectState.h.

References osl::BLACK, osl::inverseUnsafe(), longEffectNumTable(), osl::Piece::number(), osl::Piece::owner(), osl::SimpleState::pieceOf(), and pinOrOpen().

Referenced by osl::eval::See::computeValue().

◆ pinAttacker() [2/2]

Piece osl::NumEffectState::pinAttacker ( Piece  pinned) const
inline

Definition at line 248 of file numEffectState.h.

References osl::BLACK, and osl::Piece::owner().

◆ pinnedCanMoveTo() [1/2]

template<Player P>
bool osl::NumEffectState::pinnedCanMoveTo ( Piece  p,
Square  to 
) const
inline

pinされた駒pがtoに動けるか? pinに関係がなければtoへ動けるという前提

Definition at line 222 of file numEffectState.h.

References osl::Board_Table, osl::BoardTable::getShort8Unsafe(), osl::Piece::owner(), osl::primDir(), osl::primDirUnsafe(), and osl::Piece::square().

Referenced by osl::eval::See::computeValue().

◆ pinnedCanMoveTo() [2/2]

bool osl::NumEffectState::pinnedCanMoveTo ( Piece  p,
Square  to 
) const
inline

Definition at line 229 of file numEffectState.h.

References osl::BLACK, and osl::Piece::owner().

◆ pinnedDir() [1/2]

template<Player P>
Direction osl::NumEffectState::pinnedDir ( Piece  p) const
inline

◆ pinnedDir() [2/2]

Direction osl::NumEffectState::pinnedDir ( Piece  p) const
inline

Definition at line 210 of file numEffectState.h.

References osl::BLACK, and osl::Piece::owner().

◆ pinOrOpen()

PieceMask osl::NumEffectState::pinOrOpen ( Player  king) const
inline

◆ prologueCapture()

template<osl::Player P>
template void osl::NumEffectState::prologueCapture ( Player2Type< P >  ,
Square  from,
Square  to,
Piece  target,
int  promoteMask,
Piece oldPiece,
PtypeO oldPtypeO,
PtypeO capturePtypeO,
PtypeO new_ptypeo,
int &  num0,
int &  num1,
int &  num1Index,
mask_t &  num1Mask,
CArray< PieceMask, 2 > &  pin_or_open_backup,
KingMobility king_mobility_backup,
PieceMask promoted_backup,
CArray< PieceMask, 2 > &  effected_mask_backup,
CArray< PieceMask, 2 > &  effected_changed_mask_backup,
CArray< uint64_t, 2 > &  king8infos_backup,
MobilityTable mobility_backup 
)
private

◆ prologueDrop()

template<osl::Player P>
template void osl::NumEffectState::prologueDrop ( Player2Type< P >  ,
Square  to,
Ptype  ptype,
Piece oldPiece,
int &  num,
PtypeO ptypeO,
int &  numIndex,
mask_t &  numMask,
CArray< PieceMask, 2 > &  pin_or_open_backup,
KingMobility king_mobility_backup,
CArray< PieceMask, 2 > &  effected_mask_backup,
CArray< PieceMask, 2 > &  effected_changed_mask_backup,
CArray< uint64_t, 2 > &  king8infos_backup,
MobilityTable mobility_backup 
)
private

◆ prologueSimple()

template<osl::Player P>
template void osl::NumEffectState::prologueSimple ( Player2Type< P >  ,
Square  from,
Square  to,
int  promoteMask,
Piece oldPiece,
int &  num,
PtypeO oldPtypeO,
PtypeO new_ptypeo,
CArray< PieceMask, 2 > &  pin_or_open_backup,
KingMobility king_mobility_backup,
PieceMask promoted_backup,
CArray< PieceMask, 2 > &  effected_mask_backup,
CArray< PieceMask, 2 > &  effected_changed_mask_backup,
CArray< uint64_t, 2 > &  king8infos_backup,
MobilityTable mobility_backup 
)
private

◆ promotedPieces()

const PieceMask osl::NumEffectState::promotedPieces ( ) const
inline

◆ recalcPinOpen()

void osl::NumEffectState::recalcPinOpen ( Square  changed,
Direction lastDir,
Player  defense 
)
inlineprivate

◆ safeCaptureNotByKing() [1/2]

Piece osl::NumEffectState::safeCaptureNotByKing ( Player  P,
Square  target 
) const
inline

Definition at line 875 of file numEffectState.h.

References osl::BLACK, and osl::SimpleState::kingPiece().

◆ safeCaptureNotByKing() [2/2]

template<Player P>
Piece osl::NumEffectState::safeCaptureNotByKing ( Square  target,
Piece  king 
) const

玉の素抜きなしに合法手でtargetに移動可能かを判定

Parameters
king玉 (玉で取る手は考えない)
Returns
移動可能な駒があれば,安全な駒を一つ.なければ Piece::EMPTY()
See also
osl::move_classifier::PawnDropCheckmate

Referenced by osl::move_classifier::PawnDropCheckmate< P >::isMember().

◆ selectCheapPiece()

const osl::Piece osl::NumEffectState::selectCheapPiece ( PieceMask  effect) const

◆ showEffect()

void osl::NumEffectState::showEffect ( std::ostream &  os) const

◆ wasCheckEvasion()

bool osl::NumEffectState::wasCheckEvasion ( Move  last_move) const

Friends And Related Symbol Documentation

◆ operator==

bool operator== ( const NumEffectState st1,
const NumEffectState st2 
)
friend

駒番に依存した局面(インスタンス)比較をする.

なお、駒番に非依存な局面比較をしたい場合は、osl::record::CompactBoardや osl::hash::HashKeyを用いる.

Member Data Documentation

◆ effects

effect::NumSimpleEffectTable osl::NumEffectState::effects
private

◆ king8infos

CArray<uint64_t,2> osl::NumEffectState::king8infos
private

Definition at line 41 of file numEffectState.h.

Referenced by copyFrom(), Iking8Info(), makeKing8Info(), and osl::operator==().

◆ king_mobility

KingMobility osl::NumEffectState::king_mobility
private

◆ pieces_onboard

CArray<PieceMask,2> osl::NumEffectState::pieces_onboard
private

◆ pin_or_open

CArray<PieceMask,2> osl::NumEffectState::pin_or_open
private

Definition at line 39 of file numEffectState.h.

Referenced by checkShadow(), copyFrom(), osl::operator==(), pin(), pinOrOpen(), and recalcPinOpen().

◆ promoted

PieceMask osl::NumEffectState::promoted
private

The documentation for this class was generated from the following files: