複数のmoveによる差分を分解したもの 一回のmoveでOnBoarPlusは手番の駒のみ OnBoardMinusは手番と相手の駒がありうる OnBoardPlusは 最大深さ/2 OnBoardMinusは 最大深さ分用意する. [詳細]
#include <moveStackRejections.h>
Public メソッド | |
StateElements () | |
void | clear () |
void | addStand (Ptype ptype) |
相手が駒を取りptypeの持駒が増えた. 自分がptypeの持駒を使った | |
void | subStand (Ptype ptype) |
相手がtypeの持駒を使った 自分が駒を取りptypeの持駒が増えた. | |
void | addMyBoard (Position pos, PtypeO ptypeO) |
void | subMyBoard (Position pos, PtypeO ptypeO) |
void | addOpBoard (Position pos, PtypeO ptypeO) |
void | subOpBoard (Position pos, PtypeO ptypeO) |
void | addMyMove (Move move) |
自分のmoveに従って更新 | |
void | addOpMove (Move move) |
相手のmoveに従って更新 | |
bool | isLoop () const |
盤面が増減なし | |
template<Player P> | |
bool | validSimpleMove (NumEffectState const &state, OnBoardElement const &fromElement, OnBoardElement const &toElement) const |
PによるSimpleMoveが可能. | |
template<Player P> | |
bool | validSimpleMove (NumEffectState const &state, OnBoardElement const &fromElement, OnBoardElement const &toElement, Move lastMove) const |
stateにlastMoveを施した後の盤面で PによるSimpleMoveが可能 | |
template<Player P> | |
bool | validCaptureMove (NumEffectState const &state, OnBoardElement const &fromElement, OnBoardElement const &toElement, OnBoardElement const &captureElement) const |
PによるcaptureMoveが可能. | |
template<Player P> | |
bool | validCaptureMove (NumEffectState const &state, OnBoardElement const &fromElement, OnBoardElement const &toElement, OnBoardElement const &captureElement, Move lastMove) const |
stateにlastMoveを施した後の盤面で PによるCaptureMoveが可能 | |
template<Player P> | |
bool | canReject (NumEffectState const &state, bool notRejectSennichite, bool notRootMove, Move lastMove) const |
Pがあるmoveをする前の2n手前からmove後への差分からrejectするかどうか決める. playerに取って有利な持ち駒渡しがある -> false playerに取って不利な持ち駒渡しがある 差分がない場合 -> 一手パス+駒損 -> true 差分が自分一手分の時 -> その手が2n手前に可能ならtrue 差分が相手一手分の時 -> move後に相手が可能ならtrue 持ち駒渡しがない 差分がない場合 -> 一手パス notRootMoveの時は true (root以外ではそこでPASSできる) そうでないときは false 差分が自分一手分の時 -> その手が2n手前に可能ならtrue 差分が相手一手分の時 -> move後に相手が可能で notRejectSennichiteの時は false (千日手の方がましな可能性がある) そうでないときは true (有利だったら相手に千日手のチャンスを耐えない). | |
template<osl::Player P> | |
bool | validSimpleMove (osl::state::NumEffectState const &state, osl::search::OnBoardElement const &fromElement, osl::search::OnBoardElement const &toElement) const |
template<osl::Player P> | |
bool | validSimpleMove (osl::state::NumEffectState const &state, osl::search::OnBoardElement const &fromElement, osl::search::OnBoardElement const &toElement, Move lastMove) const |
こちらはstateにlastMoveをapplyした後に可能かどうかのチェックをおこなう. | |
template<osl::Player P> | |
bool | validCaptureMove (osl::state::NumEffectState const &state, osl::search::OnBoardElement const &fromElement, osl::search::OnBoardElement const &toElement, osl::search::OnBoardElement const &captureElement) const |
template<osl::Player P> | |
bool | validCaptureMove (osl::state::NumEffectState const &state, osl::search::OnBoardElement const &fromElement, osl::search::OnBoardElement const &toElement, osl::search::OnBoardElement const &captureElement, osl::Move lastMove) const |
template<osl::Player P> | |
bool | canReject (osl::state::NumEffectState const &state, bool notRejectSennichite, bool notRootMove, Move lastMove) const |
rejectable patterns 0 - sennichite (or piece losing loop) myPlus 1 myMinus 1 - my simple move myPlus 1 myMinus 1 opMinus 1 - my capture move myPlus 1 - my drop move opPlus 1 opMinus 1 - op simple move opPlus 1 opMinus 1 myPlus 1 - op capture move opMinus 1 - op drop move | |
Public 変数 | |
FixedCapacityVector < OnBoardElement, 32 > | myOnboardPlus |
FixedCapacityVector < OnBoardElement, 32 > | opOnboardPlus |
FixedCapacityVector < OnBoardElement, 64 > | myOnboardMinus |
FixedCapacityVector < OnBoardElement, 64 > | opOnboardMinus |
StandElements | stand |
複数のmoveによる差分を分解したもの 一回のmoveでOnBoarPlusは手番の駒のみ OnBoardMinusは手番と相手の駒がありうる OnBoardPlusは 最大深さ/2 OnBoardMinusは 最大深さ分用意する.
moveStackRejections.h の 80 行で定義されています。
osl::search::StateElements::StateElements | ( | ) | [inline] |
moveStackRejections.h の 87 行で定義されています。
void osl::search::StateElements::addMyBoard | ( | osl::Position | pos, | |
osl::PtypeO | ptypeO | |||
) |
moveStackRejections.cc の 30 行で定義されています。
参照先 osl::search::OnBoardElement::makePosPtypeO(), myOnboardMinus, と myOnboardPlus.
参照元 addMyMove().
void osl::search::StateElements::addMyMove | ( | osl::Move | move | ) |
自分のmoveに従って更新
moveStackRejections.cc の 89 行で定義されています。
参照先 addMyBoard(), addStand(), osl::Move::capturePtype(), osl::Move::capturePtypeO(), osl::Move::from(), osl::getPtype(), osl::Move::isDrop(), osl::Move::oldPtypeO(), osl::Move::ptype(), osl::PTYPE_EMPTY, osl::Move::ptypeO(), subMyBoard(), subOpBoard(), subStand(), osl::Move::to(), と osl::unpromote().
void osl::search::StateElements::addOpBoard | ( | osl::Position | pos, | |
osl::PtypeO | ptypeO | |||
) |
moveStackRejections.cc の 56 行で定義されています。
参照先 osl::search::OnBoardElement::makePosPtypeO(), opOnboardMinus, と opOnboardPlus.
参照元 addOpMove().
void osl::search::StateElements::addOpMove | ( | osl::Move | move | ) |
相手のmoveに従って更新
moveStackRejections.cc の 109 行で定義されています。
参照先 addOpBoard(), addStand(), osl::Move::capturePtype(), osl::Move::capturePtypeO(), osl::Move::from(), osl::getPtype(), osl::Move::isDrop(), osl::Move::oldPtypeO(), osl::Move::ptype(), osl::PTYPE_EMPTY, osl::Move::ptypeO(), subMyBoard(), subOpBoard(), subStand(), osl::Move::to(), と osl::unpromote().
void osl::search::StateElements::addStand | ( | osl::Ptype | ptype | ) |
相手が駒を取りptypeの持駒が増えた. 自分がptypeの持駒を使った
moveStackRejections.cc の 81 行で定義されています。
参照先 osl::search::StandElements::add(), と stand.
参照元 addMyMove(), と addOpMove().
bool osl::search::StateElements::canReject | ( | osl::state::NumEffectState const & | state, | |
bool | notRejectSennichite, | |||
bool | notRootMove, | |||
Move | lastMove | |||
) | const [inline] |
rejectable patterns 0 - sennichite (or piece losing loop) myPlus 1 myMinus 1 - my simple move myPlus 1 myMinus 1 opMinus 1 - my capture move myPlus 1 - my drop move opPlus 1 opMinus 1 - op simple move opPlus 1 opMinus 1 myPlus 1 - op capture move opMinus 1 - op drop move
moveStackRejections.cc の 265 行で定義されています。
参照先 osl::search::StandElements::add(), osl::search::StandElements::gegtZero(), osl::getPtype(), osl::search::StandElements::geZero(), myOnboardMinus, myOnboardPlus, opOnboardMinus, opOnboardPlus, stand, osl::search::StandElements::sub(), と osl::unpromote().
bool osl::search::StateElements::canReject | ( | NumEffectState const & | state, | |
bool | notRejectSennichite, | |||
bool | notRootMove, | |||
Move | lastMove | |||
) | const [inline] |
Pがあるmoveをする前の2n手前からmove後への差分からrejectするかどうか決める. playerに取って有利な持ち駒渡しがある -> false playerに取って不利な持ち駒渡しがある 差分がない場合 -> 一手パス+駒損 -> true 差分が自分一手分の時 -> その手が2n手前に可能ならtrue 差分が相手一手分の時 -> move後に相手が可能ならtrue 持ち駒渡しがない 差分がない場合 -> 一手パス notRootMoveの時は true (root以外ではそこでPASSできる) そうでないときは false 差分が自分一手分の時 -> その手が2n手前に可能ならtrue 差分が相手一手分の時 -> move後に相手が可能で notRejectSennichiteの時は false (千日手の方がましな可能性がある) そうでないときは true (有利だったら相手に千日手のチャンスを耐えない).
void osl::search::StateElements::clear | ( | ) | [inline] |
moveStackRejections.h の 89 行で定義されています。
bool osl::search::StateElements::isLoop | ( | ) | const [inline] |
盤面が増減なし
moveStackRejections.h の 119 行で定義されています。
参照先 myOnboardMinus, myOnboardPlus, opOnboardMinus, と opOnboardPlus.
void osl::search::StateElements::subMyBoard | ( | osl::Position | pos, | |
osl::PtypeO | ptypeO | |||
) |
moveStackRejections.cc の 43 行で定義されています。
参照先 osl::search::OnBoardElement::makePosPtypeO(), myOnboardMinus, と myOnboardPlus.
参照元 addMyMove(), と addOpMove().
void osl::search::StateElements::subOpBoard | ( | osl::Position | pos, | |
osl::PtypeO | ptypeO | |||
) |
moveStackRejections.cc の 69 行で定義されています。
参照先 osl::search::OnBoardElement::makePosPtypeO(), opOnboardMinus, と opOnboardPlus.
参照元 addMyMove(), と addOpMove().
void osl::search::StateElements::subStand | ( | osl::Ptype | ptype | ) |
相手がtypeの持駒を使った 自分が駒を取りptypeの持駒が増えた.
moveStackRejections.cc の 85 行で定義されています。
参照先 stand, と osl::search::StandElements::sub().
参照元 addMyMove(), と addOpMove().
bool osl::search::StateElements::validCaptureMove | ( | osl::state::NumEffectState const & | state, | |
osl::search::OnBoardElement const & | fromElement, | |||
osl::search::OnBoardElement const & | toElement, | |||
osl::search::OnBoardElement const & | captureElement, | |||
osl::Move | lastMove | |||
) | const [inline] |
moveStackRejections.cc の 215 行で定義されています。
参照先 osl::Position::canPromote(), osl::Move::from(), osl::PtypeTable::getEffect(), osl::state::SimpleState::getPieceAt(), osl::EffectContent::hasEffect(), osl::EffectContent::hasUnblockableEffect(), osl::Piece::isEmpty(), osl::EffectContent::offset(), osl::search::OnBoardElement::pos(), osl::Ptype_Table, osl::search::OnBoardElement::ptypeO(), osl::Move::to(), と osl::unpromote().
bool osl::search::StateElements::validCaptureMove | ( | osl::state::NumEffectState const & | state, | |
osl::search::OnBoardElement const & | fromElement, | |||
osl::search::OnBoardElement const & | toElement, | |||
osl::search::OnBoardElement const & | captureElement | |||
) | const [inline] |
moveStackRejections.cc の 193 行で定義されています。
参照先 osl::Position::canPromote(), osl::PtypeTable::getEffect(), osl::EffectContent::hasEffect(), osl::EffectContent::hasUnblockableEffect(), osl::state::SimpleState::isEmptyBetween(), osl::EffectContent::offset(), osl::search::OnBoardElement::pos(), osl::Ptype_Table, osl::search::OnBoardElement::ptypeO(), と osl::unpromote().
bool osl::search::StateElements::validCaptureMove | ( | NumEffectState const & | state, | |
OnBoardElement const & | fromElement, | |||
OnBoardElement const & | toElement, | |||
OnBoardElement const & | captureElement, | |||
Move | lastMove | |||
) | const [inline] |
stateにlastMoveを施した後の盤面で PによるCaptureMoveが可能
bool osl::search::StateElements::validCaptureMove | ( | NumEffectState const & | state, | |
OnBoardElement const & | fromElement, | |||
OnBoardElement const & | toElement, | |||
OnBoardElement const & | captureElement | |||
) | const [inline] |
PによるcaptureMoveが可能.
bool osl::search::StateElements::validSimpleMove | ( | osl::state::NumEffectState const & | state, | |
osl::search::OnBoardElement const & | fromElement, | |||
osl::search::OnBoardElement const & | toElement, | |||
Move | lastMove | |||
) | const [inline] |
こちらはstateにlastMoveをapplyした後に可能かどうかのチェックをおこなう.
moveStackRejections.cc の 155 行で定義されています。
参照先 osl::Position::canPromote(), osl::Move::from(), osl::PtypeTable::getEffect(), osl::state::SimpleState::getPieceAt(), osl::EffectContent::hasEffect(), osl::EffectContent::hasUnblockableEffect(), osl::Piece::isEmpty(), osl::EffectContent::offset(), osl::search::OnBoardElement::pos(), osl::Ptype_Table, osl::search::OnBoardElement::ptypeO(), osl::Move::to(), と osl::unpromote().
bool osl::search::StateElements::validSimpleMove | ( | osl::state::NumEffectState const & | state, | |
osl::search::OnBoardElement const & | fromElement, | |||
osl::search::OnBoardElement const & | toElement | |||
) | const [inline] |
moveStackRejections.cc の 132 行で定義されています。
参照先 osl::Position::canPromote(), osl::PtypeTable::getEffect(), osl::EffectContent::hasEffect(), osl::EffectContent::hasUnblockableEffect(), osl::state::SimpleState::isEmptyBetween(), osl::EffectContent::offset(), osl::search::OnBoardElement::pos(), osl::Ptype_Table, osl::search::OnBoardElement::ptypeO(), と osl::unpromote().
bool osl::search::StateElements::validSimpleMove | ( | NumEffectState const & | state, | |
OnBoardElement const & | fromElement, | |||
OnBoardElement const & | toElement, | |||
Move | lastMove | |||
) | const [inline] |
stateにlastMoveを施した後の盤面で PによるSimpleMoveが可能
bool osl::search::StateElements::validSimpleMove | ( | NumEffectState const & | state, | |
OnBoardElement const & | fromElement, | |||
OnBoardElement const & | toElement | |||
) | const [inline] |
PによるSimpleMoveが可能.
FixedCapacityVector<OnBoardElement,64> osl::search::StateElements::myOnboardMinus |
moveStackRejections.h の 83 行で定義されています。
参照元 addMyBoard(), canReject(), isLoop(), osl::search::operator<<(), と subMyBoard().
FixedCapacityVector<OnBoardElement,32> osl::search::StateElements::myOnboardPlus |
moveStackRejections.h の 81 行で定義されています。
参照元 addMyBoard(), canReject(), isLoop(), osl::search::operator<<(), と subMyBoard().
FixedCapacityVector<OnBoardElement,64> osl::search::StateElements::opOnboardMinus |
moveStackRejections.h の 84 行で定義されています。
参照元 addOpBoard(), canReject(), isLoop(), osl::search::operator<<(), と subOpBoard().
FixedCapacityVector<OnBoardElement,32> osl::search::StateElements::opOnboardPlus |
moveStackRejections.h の 82 行で定義されています。
参照元 addOpBoard(), canReject(), isLoop(), osl::search::operator<<(), と subOpBoard().
moveStackRejections.h の 85 行で定義されています。
参照元 addStand(), canReject(), osl::search::operator<<(), と subStand().