敵玉の8近傍の状態を表す. More...
#include <king8Info.h>
Public Member Functions | |
King8Info (uint64_t v) | |
uint64_t | uint64Value () const |
unsigned int | dropCandidate () const |
0-7 bit 目を返す | |
unsigned int | liberty () const |
8-15 bit 目を 0-7bitにshiftして返す | |
unsigned int | libertyDropMask () const |
0-15bit | |
unsigned int | libertyCandidate () const |
16-23 bit 目を 0-7bitにshiftして返す | |
unsigned int | moveCandidate2 () const |
24-31 bit 目を 0-7bitにshiftして返す | |
unsigned int | spaces () const |
unsigned int | moves () const |
unsigned int | libertyCount () const |
libertyの数 | |
template<Player P, Direction Dir> | |
unsigned int | moveCandidateDir (NumEffectState const &state, Square target) const |
template<Player P> | |
unsigned int | countMoveCandidate (NumEffectState const &state) const |
unsigned int | countMoveCandidate (Player player, NumEffectState const &state) const |
template<Player P> | |
unsigned int | moveCandidateMask (NumEffectState const &state) const |
template<Player P> | |
bool | hasMoveCandidate (NumEffectState const &state) const |
Static Public Member Functions | |
template<Player P> | |
static const King8Info | make (NumEffectState const &state, Square king, PieceMask pinned) |
template<Player P> | |
static const King8Info | make (NumEffectState const &state, Square king) |
static const King8Info | make (Player attack, NumEffectState const &state) |
alt(attack) のking について計算 | |
static const King8Info | makeWithPin (Player attack, NumEffectState const &state, const PieceMask &pinned) |
alt(attack) のking について計算. | |
Static Private Member Functions | |
template<Player P, Direction Dir> | |
static uint64_t | hasEffectMask (NumEffectState const &state, Square target, PieceMask pinned, PieceMask on_board_defense) |
alt(P)の玉にDirの方向で迫るcanMoveMaskを計算する. | |
Private Attributes | |
uint64_t | value |
敵玉の8近傍の状態を表す.
王手がかかっている場合も含むことにする. Dirは相手の玉に対してDir方向で王手をかける位置 0-7 : 敵玉以外の利きがなく,自分の利きがある空白 (駒を打つ候補となりうる点) 8-15 : 敵玉がDirに移動可能(王手がかかっている場合は長い利きも延ばす) 16-23 : 空白か味方の駒(利き次第では移動可能になる) 24-31 : 敵玉以外の利きがなく,自分の利きがある空白,敵駒 (OLD 24-31 : 敵玉以外の利きがなく,自分の利きが2つ以上ある空白,敵駒 (駒を動かす候補となりうる点) ) 32-39 : 空白(駒打ち王手の候補) 40-47 : 味方の利き(kingの利きも含んでいる)がある空白,敵駒 48-51 : 敵玉がDirに移動可能(王手がかかっている場合は長い利きも延ばす)な数
Definition at line 30 of file king8Info.h.
osl::checkmate::King8Info::King8Info | ( | uint64_t | v | ) | [inline, explicit] |
Definition at line 34 of file king8Info.h.
Referenced by make().
unsigned int osl::checkmate::King8Info::countMoveCandidate | ( | NumEffectState const & | state | ) | const [inline] |
Definition at line 97 of file king8Info.h.
Referenced by osl::checkmate::ProofNumberTable::disproofAfterAllCheck().
unsigned int osl::checkmate::King8Info::countMoveCandidate | ( | Player | player, |
NumEffectState const & | state | ||
) | const [inline] |
Definition at line 110 of file king8Info.h.
References osl::BLACK.
unsigned int osl::checkmate::King8Info::dropCandidate | ( | ) | const [inline] |
0-7 bit 目を返す
Definition at line 51 of file king8Info.h.
References value.
Referenced by osl::checkmate::ProofNumberTable::disproofAfterAllCheck(), osl::search::BreakThreatmate::generate(), and osl::checkmate::operator<<().
uint64_t osl::checkmate::King8Info::hasEffectMask | ( | NumEffectState const & | state, |
Square | target, | ||
PieceMask | pinned, | ||
PieceMask | on_board_defense | ||
) | [static, private] |
alt(P)の玉にDirの方向で迫るcanMoveMaskを計算する.
P(template) | - 攻撃側のplayer |
Dir(template) | - 敵玉に迫る方向(shortの8方向) |
state | - 初期状態 |
target | - alt(P)の玉があるpotision |
Definition at line 68 of file king8Info.cc.
References osl::Piece::canMoveOn(), osl::Piece::isEdge(), osl::Piece::isEmpty(), osl::Piece::isOnBoardByOwner(), and target.
bool osl::checkmate::King8Info::hasMoveCandidate | ( | NumEffectState const & | state | ) | const [inline] |
Definition at line 130 of file king8Info.h.
unsigned int osl::checkmate::King8Info::liberty | ( | ) | const [inline] |
8-15 bit 目を 0-7bitにshiftして返す
Definition at line 56 of file king8Info.h.
References value.
Referenced by osl::checkmate::ProofNumberTable::countLiberty(), osl::checkmate::ProofNumberTable::countLibertyLong(), osl::checkmate::ProofNumberTable::countLibertyShortNotKnight(), osl::eval::ml::King8EffectAll::eval(), osl::checkmate::ProofNumberTable::libertyAfterAllMove(), osl::checkmate::operator<<(), and osl::checkmate::ImmediateCheckmateTable::ptypeDropMask().
unsigned int osl::checkmate::King8Info::libertyCandidate | ( | ) | const [inline] |
16-23 bit 目を 0-7bitにshiftして返す
Definition at line 66 of file king8Info.h.
References value.
Referenced by osl::checkmate::operator<<().
unsigned int osl::checkmate::King8Info::libertyCount | ( | ) | const [inline] |
libertyの数
Definition at line 84 of file king8Info.h.
References value.
Referenced by osl::checkmate::PureLibertyEstimator::attackH(), osl::checkmate::ProofNumberTable::libertyAfterAllDrop(), and main().
unsigned int osl::checkmate::King8Info::libertyDropMask | ( | ) | const [inline] |
0-15bit
Definition at line 61 of file king8Info.h.
References value.
Referenced by osl::checkmate::ImmediateCheckmateTable::dropPtypeMask(), and osl::checkmate::ProofNumberTable::libertyAfterAllDrop().
const osl::checkmate::King8Info osl::checkmate::King8Info::make | ( | NumEffectState const & | state, |
Square | king, | ||
PieceMask | pinned | ||
) | [static] |
Definition at line 112 of file king8Info.cc.
References osl::alt(), osl::Board_Table, osl::BoardTable::getShort8(), King8Info(), osl::Piece::square(), and target.
const osl::checkmate::King8Info osl::checkmate::King8Info::make | ( | NumEffectState const & | state, |
Square | king | ||
) | [static] |
Definition at line 144 of file king8Info.cc.
References osl::alt(), and target.
const osl::checkmate::King8Info osl::checkmate::King8Info::make | ( | Player | attack, |
NumEffectState const & | state | ||
) | [static] |
alt(attack) のking について計算
Definition at line 150 of file king8Info.cc.
References osl::alt(), and osl::BLACK.
const osl::checkmate::King8Info osl::checkmate::King8Info::makeWithPin | ( | Player | attack, |
NumEffectState const & | state, | ||
const PieceMask & | pinned | ||
) | [static] |
alt(attack) のking について計算.
pinが既に求まっている
Definition at line 160 of file king8Info.cc.
References osl::alt(), and osl::BLACK.
unsigned int osl::checkmate::King8Info::moveCandidate2 | ( | ) | const [inline] |
24-31 bit 目を 0-7bitにshiftして返す
Definition at line 71 of file king8Info.h.
References value.
Referenced by osl::checkmate::operator<<().
unsigned int osl::checkmate::King8Info::moveCandidateDir | ( | NumEffectState const & | state, |
Square | target | ||
) | const [inline] |
Definition at line 89 of file king8Info.h.
References osl::move_generator::addeffect8::hasEffect(), and value.
unsigned int osl::checkmate::King8Info::moveCandidateMask | ( | NumEffectState const & | state | ) | const [inline] |
unsigned int osl::checkmate::King8Info::moves | ( | ) | const [inline] |
Definition at line 79 of file king8Info.h.
References value.
Referenced by osl::checkmate::Dfpn::attack().
unsigned int osl::checkmate::King8Info::spaces | ( | ) | const [inline] |
Definition at line 75 of file king8Info.h.
References value.
uint64_t osl::checkmate::King8Info::uint64Value | ( | ) | const [inline] |
Definition at line 48 of file king8Info.h.
References value.
Referenced by osl::checkmate::detail::blockingDiagonalAttack(), osl::checkmate::ImmediateCheckmate::hasCheckmateMove(), osl::checkmate::ImmediateCheckmate::hasCheckmateMoveDirPiece(), osl::checkmate::detail::hasCheckmateMoveKnight(), osl::checkmate::EdgeTable::resetEdgeFromLiberty(), osl::checkmate::detail::slowCheckDrop(), and osl::checkmate::ImmediateCheckmate::slowHasCheckmateMoveDirPiece().
uint64_t osl::checkmate::King8Info::value [private] |
Definition at line 32 of file king8Info.h.
Referenced by dropCandidate(), liberty(), libertyCandidate(), libertyCount(), libertyDropMask(), moveCandidate2(), moveCandidateDir(), moves(), spaces(), and uint64Value().