構造体 osl::search::StateElements

複数のmoveによる差分を分解したもの 一回のmoveでOnBoarPlusは手番の駒のみ OnBoardMinusは手番と相手の駒がありうる OnBoardPlusは 最大深さ/2 OnBoardMinusは 最大深さ分用意する. [詳細]

#include <moveStackRejections.h>

osl::search::StateElementsのコラボレーション図
Collaboration graph
[凡例]

すべてのメンバ一覧

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.h80 行で定義されています。


コンストラクタとデストラクタ

osl::search::StateElements::StateElements (  )  [inline]

moveStackRejections.h87 行で定義されています。


関数

void osl::search::StateElements::addMyBoard ( osl::Position  pos,
osl::PtypeO  ptypeO 
)

moveStackRejections.cc30 行で定義されています。

参照先 osl::search::OnBoardElement::makePosPtypeO(), myOnboardMinus, と myOnboardPlus.

参照元 addMyMove().

void osl::search::StateElements::addMyMove ( osl::Move  move  ) 
void osl::search::StateElements::addOpBoard ( osl::Position  pos,
osl::PtypeO  ptypeO 
)

moveStackRejections.cc56 行で定義されています。

参照先 osl::search::OnBoardElement::makePosPtypeO(), opOnboardMinus, と opOnboardPlus.

参照元 addOpMove().

void osl::search::StateElements::addOpMove ( osl::Move  move  ) 
void osl::search::StateElements::addStand ( osl::Ptype  ptype  ) 

相手が駒を取りptypeの持駒が増えた. 自分がptypeの持駒を使った

moveStackRejections.cc81 行で定義されています。

参照先 osl::search::StandElements::add(), と stand.

参照元 addMyMove(), と addOpMove().

template<osl::Player P>
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.cc265 行で定義されています。

参照先 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().

template<Player P>
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 (有利だったら相手に千日手のチャンスを耐えない).

参照元 osl::search::MoveStackRejections::probe().

void osl::search::StateElements::clear (  )  [inline]

moveStackRejections.h89 行で定義されています。

bool osl::search::StateElements::isLoop (  )  const [inline]

盤面が増減なし

moveStackRejections.h119 行で定義されています。

参照先 myOnboardMinus, myOnboardPlus, opOnboardMinus, と opOnboardPlus.

参照元 osl::search::MoveStackRejections::probe().

void osl::search::StateElements::subMyBoard ( osl::Position  pos,
osl::PtypeO  ptypeO 
)

moveStackRejections.cc43 行で定義されています。

参照先 osl::search::OnBoardElement::makePosPtypeO(), myOnboardMinus, と myOnboardPlus.

参照元 addMyMove(), と addOpMove().

void osl::search::StateElements::subOpBoard ( osl::Position  pos,
osl::PtypeO  ptypeO 
)

moveStackRejections.cc69 行で定義されています。

参照先 osl::search::OnBoardElement::makePosPtypeO(), opOnboardMinus, と opOnboardPlus.

参照元 addMyMove(), と addOpMove().

void osl::search::StateElements::subStand ( osl::Ptype  ptype  ) 

相手がtypeの持駒を使った 自分が駒を取りptypeの持駒が増えた.

moveStackRejections.cc85 行で定義されています。

参照先 stand, と osl::search::StandElements::sub().

参照元 addMyMove(), と addOpMove().

template<osl::Player P>
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]
template<osl::Player P>
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]
template<Player P>
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が可能

template<Player P>
bool osl::search::StateElements::validCaptureMove ( NumEffectState const &  state,
OnBoardElement const &  fromElement,
OnBoardElement const &  toElement,
OnBoardElement const &  captureElement 
) const [inline]

PによるcaptureMoveが可能.

template<osl::Player P>
bool osl::search::StateElements::validSimpleMove ( osl::state::NumEffectState const &  state,
osl::search::OnBoardElement const &  fromElement,
osl::search::OnBoardElement const &  toElement,
Move  lastMove 
) const [inline]
template<osl::Player P>
bool osl::search::StateElements::validSimpleMove ( osl::state::NumEffectState const &  state,
osl::search::OnBoardElement const &  fromElement,
osl::search::OnBoardElement const &  toElement 
) const [inline]
template<Player P>
bool osl::search::StateElements::validSimpleMove ( NumEffectState const &  state,
OnBoardElement const &  fromElement,
OnBoardElement const &  toElement,
Move  lastMove 
) const [inline]

stateにlastMoveを施した後の盤面で  PによるSimpleMoveが可能

template<Player P>
bool osl::search::StateElements::validSimpleMove ( NumEffectState const &  state,
OnBoardElement const &  fromElement,
OnBoardElement const &  toElement 
) const [inline]

PによるSimpleMoveが可能.


変数

moveStackRejections.h83 行で定義されています。

参照元 addMyBoard(), canReject(), isLoop(), osl::search::operator<<(), と subMyBoard().

moveStackRejections.h81 行で定義されています。

参照元 addMyBoard(), canReject(), isLoop(), osl::search::operator<<(), と subMyBoard().

moveStackRejections.h84 行で定義されています。

参照元 addOpBoard(), canReject(), isLoop(), osl::search::operator<<(), と subOpBoard().

moveStackRejections.h82 行で定義されています。

参照元 addOpBoard(), canReject(), isLoop(), osl::search::operator<<(), と subOpBoard().

moveStackRejections.h85 行で定義されています。

参照元 addStand(), canReject(), osl::search::operator<<(), と subStand().


この構造体の説明は次のファイルから生成されました:
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義
Sun May 16 09:58:53 2010に生成されました。  doxygen 1.6.3