クラス osl::RepetitionCounter

千日手の検出. [詳細]

#include <repetitionCounter.h>

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

すべてのメンバ一覧

構成

struct  Table

Public 型

typedef osl::slist< int > list_t

Public メソッド

 RepetitionCounter ()
 RepetitionCounter (const RepetitionCounter &c)
 RepetitionCounter (const NumEffectState &initial)
 ~RepetitionCounter ()
void push (const NumEffectState &state, Move move)
 state の状態で move を(これから)指すことを記録
void push (const NumEffectState &state)
 指した後の局面を記録
void push (const HashKey &key, const NumEffectState &state)
 指した後の局面を記録
void pop ()
void clear ()
const Sennichite isSennichite (const NumEffectState &state, Move move) const
const Sennichite isAlmostSennichite (const HashKey &key) const
 このまま同形を繰り返したらどの結果になるかを返す
const std::pair< Sennichite, int > distanceToSennichite (const HashKey &key) const
unsigned int countRepetition (const HashKey &) const
const list_t getRepetitions (const HashKey &) const
void printMatches (const HashKey &key) const
int getLastMove (const HashKey &key) const
 key の手を最後に登録した指手番号.
int getFirstMove (const HashKey &key) const
 key の手を最初に登録した指手番号.
int checkCount (Player attack) const
const HashKeyStack & history () const
bool isConsistent () const

Static Public メソッド

static bool maybeEqual (const RepetitionCounter &l, const RepetitionCounter &r)

Private メソッド

int order () const
void push (const HashKey &new_key, bool is_check)
const Sennichite isAlmostSennichiteUnsafe (int first_move) const

Private 変数

boost::scoped_ptr< Tabletable
CArray< osl::vector< int >, 2 > continuous_check
HashKeyStack hash_history

説明

千日手の検出.

連続王手の千日手(同一局面の最初と4回目の間の一方の指し手が王手のみだった場合)は、連続王手をかけていたほうが負け。 http://www.computer-shogi.org/wcsc14/youryou.html

repetitionCounter.h22 行で定義されています。


型定義

typedef osl::slist<int> osl::RepetitionCounter::list_t

repetitionCounter.h30 行で定義されています。


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

osl::RepetitionCounter::RepetitionCounter (  ) 

repetitionCounter.cc42 行で定義されています。

参照先 clear().

osl::RepetitionCounter::RepetitionCounter ( const RepetitionCounter c  ) 

repetitionCounter.cc48 行で定義されています。

参照先 isConsistent(), と table.

osl::RepetitionCounter::RepetitionCounter ( const NumEffectState &  initial  )  [explicit]

repetitionCounter.cc59 行で定義されています。

参照先 clear(), と push().

osl::RepetitionCounter::~RepetitionCounter (  ) 

repetitionCounter.cc68 行で定義されています。


関数

int osl::RepetitionCounter::checkCount ( Player  attack  )  const [inline]
void osl::RepetitionCounter::clear (  ) 
unsigned int osl::RepetitionCounter::countRepetition ( const HashKey &  key  )  const

repetitionCounter.cc199 行で定義されています。

参照先 table.

参照元 processRecord().

const std::pair< osl::Sennichite, int > osl::RepetitionCounter::distanceToSennichite ( const HashKey &  key  )  const
戻り値:
pair<isAlmostSennichite, count>

repetitionCounter.cc190 行で定義されています。

参照先 isAlmostSennichite(), osl::Sennichite::NORMAL(), と table.

int osl::RepetitionCounter::getFirstMove ( const HashKey &  key  )  const

key の手を最初に登録した指手番号.

戻り値:
初めての局面では-1

repetitionCounter.cc161 行で定義されています。

参照先 result, と table.

参照元 isAlmostSennichite(), と processRecord().

int osl::RepetitionCounter::getLastMove ( const HashKey &  key  )  const

key の手を最後に登録した指手番号.

戻り値:
初めての局面では-1

repetitionCounter.cc153 行で定義されています。

参照先 table.

const list_t osl::RepetitionCounter::getRepetitions ( const HashKey &  key  )  const

repetitionCounter.cc208 行で定義されています。

参照先 table.

const HashKeyStack& osl::RepetitionCounter::history (  )  const [inline]
const Sennichite osl::RepetitionCounter::isAlmostSennichite ( const HashKey &  key  )  const [inline]
const Sennichite osl::RepetitionCounter::isAlmostSennichiteUnsafe ( int  first_move  )  const [inline, private]
bool osl::RepetitionCounter::isConsistent (  )  const

repetitionCounter.cc231 行で定義されています。

参照先 osl::alt(), continuous_check, hash_history, history(), order(), と table.

参照元 RepetitionCounter().

const osl::Sennichite osl::RepetitionCounter::isSennichite ( const NumEffectState &  state,
Move  move 
) const

repetitionCounter.cc175 行で定義されています。

参照先 isAlmostSennichite(), osl::Sennichite::NORMAL(), と table.

参照元 processRecord().

bool osl::RepetitionCounter::maybeEqual ( const RepetitionCounter l,
const RepetitionCounter r 
) [static]

repetitionCounter.cc265 行で定義されています。

参照先 continuous_check, hash_history, と table.

int osl::RepetitionCounter::order (  )  const [inline, private]

repetitionCounter.h28 行で定義されています。

参照先 hash_history.

参照元 isAlmostSennichiteUnsafe(), isConsistent(), pop(), と push().

void osl::RepetitionCounter::pop (  ) 
void osl::RepetitionCounter::printMatches ( const HashKey &  key  )  const

repetitionCounter.cc218 行で定義されています。

参照先 table.

void osl::RepetitionCounter::push ( const HashKey &  key,
const NumEffectState &  state 
)

指した後の局面を記録

repetitionCounter.cc99 行で定義されています。

参照先 push().

void osl::RepetitionCounter::push ( const NumEffectState &  state  ) 

指した後の局面を記録

repetitionCounter.cc106 行で定義されています。

参照先 push().

void osl::RepetitionCounter::push ( const NumEffectState &  state,
Move  move 
)

state の状態で move を(これから)指すことを記録

repetitionCounter.cc112 行で定義されています。

参照先 osl::Move::isPass(), osl::Move::isValidOrPass(), osl::Move::player(), と push().

void osl::RepetitionCounter::push ( const HashKey &  new_key,
bool  is_check 
) [private]

変数

CArray<osl::vector<int>, 2> osl::RepetitionCounter::continuous_check [private]

repetitionCounter.h26 行で定義されています。

参照元 checkCount(), clear(), isAlmostSennichiteUnsafe(), isConsistent(), maybeEqual(), pop(), と push().

HashKeyStack osl::RepetitionCounter::hash_history [private]

repetitionCounter.h27 行で定義されています。

参照元 clear(), history(), isConsistent(), maybeEqual(), order(), pop(), と push().

boost::scoped_ptr<Table> osl::RepetitionCounter::table [private]

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