複数の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().
1.6.3