|
My Project
|
千日手の検出. More...
#include <repetitionCounter.h>
Classes | |
| struct | Table |
Public Types | |
| typedef std::list< int > | list_t |
Public Member Functions | |
| 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 Member Functions | |
| static bool | maybeEqual (const RepetitionCounter &l, const RepetitionCounter &r) |
Private Member Functions | |
| int | order () const |
| void | push (const HashKey &new_key, bool is_check) |
| const Sennichite | isAlmostSennichiteUnsafe (int first_move) const |
Private Attributes | |
| std::unique_ptr< Table > | table |
| CArray< std::vector< int >, 2 > | continuous_check |
| HashKeyStack | hash_history |
千日手の検出.
連続王手の千日手(同一局面の最初と4回目の間の一方の指し手が王手のみだった場合)は、連続王手をかけていたほうが負け。 http://www.computer-shogi.org/wcsc14/youryou.html
Definition at line 20 of file repetitionCounter.h.
| typedef std::list<int> osl::RepetitionCounter::list_t |
Definition at line 28 of file repetitionCounter.h.
| osl::RepetitionCounter::RepetitionCounter | ( | ) |
Definition at line 34 of file repetitionCounter.cc.
References clear(), hash_history, initial_capacity, and table.
Referenced by maybeEqual(), and RepetitionCounter().
| osl::RepetitionCounter::RepetitionCounter | ( | const RepetitionCounter & | c | ) |
Definition at line 40 of file repetitionCounter.cc.
References continuous_check, hash_history, isConsistent(), RepetitionCounter(), and table.
|
explicit |
Definition at line 51 of file repetitionCounter.cc.
References clear(), hash_history, initial_capacity, push(), and table.
| osl::RepetitionCounter::~RepetitionCounter | ( | ) |
Definition at line 60 of file repetitionCounter.cc.
|
inline |
Definition at line 91 of file repetitionCounter.h.
References continuous_check.
Referenced by push(), and osl::checkmate::DualDfpn::writeRootHistory().
| void osl::RepetitionCounter::clear | ( | ) |
Definition at line 19 of file repetitionCounter.cc.
References continuous_check, hash_history, initial_capacity, and table.
Referenced by RepetitionCounter(), and RepetitionCounter().
| unsigned int osl::RepetitionCounter::countRepetition | ( | const HashKey & | key | ) | const |
Definition at line 190 of file repetitionCounter.cc.
References table.
| const std::pair< osl::Sennichite, int > osl::RepetitionCounter::distanceToSennichite | ( | const HashKey & | key | ) | const |
Definition at line 181 of file repetitionCounter.cc.
References isAlmostSennichite(), osl::Sennichite::NORMAL(), and table.
| int osl::RepetitionCounter::getFirstMove | ( | const HashKey & | key | ) | const |
key の手を最初に登録した指手番号.
Definition at line 152 of file repetitionCounter.cc.
References table.
Referenced by isAlmostSennichite().
| int osl::RepetitionCounter::getLastMove | ( | const HashKey & | key | ) | const |
key の手を最後に登録した指手番号.
Definition at line 144 of file repetitionCounter.cc.
References table.
Definition at line 199 of file repetitionCounter.cc.
References table.
|
inline |
Definition at line 95 of file repetitionCounter.h.
References hash_history.
Referenced by isConsistent(), and osl::checkmate::DualDfpn::writeRootHistory().
|
inline |
このまま同形を繰り返したらどの結果になるかを返す
Definition at line 69 of file repetitionCounter.h.
References getFirstMove(), isAlmostSennichiteUnsafe(), and osl::Sennichite::NORMAL().
Referenced by distanceToSennichite(), and isSennichite().
|
inlineprivate |
Definition at line 55 of file repetitionCounter.h.
References osl::BLACK, osl::Sennichite::BLACK_LOSE(), continuous_check, osl::Sennichite::DRAW(), order(), osl::WHITE, and osl::Sennichite::WHITE_LOSE().
Referenced by isAlmostSennichite().
| bool osl::RepetitionCounter::isConsistent | ( | ) | const |
Definition at line 221 of file repetitionCounter.cc.
References osl::alt(), continuous_check, hash_history, history(), order(), table, and osl::hash::HashKey128::turn().
Referenced by RepetitionCounter().
| const osl::Sennichite osl::RepetitionCounter::isSennichite | ( | const NumEffectState & | state, |
| Move | move ) const |
Definition at line 166 of file repetitionCounter.cc.
References isAlmostSennichite(), osl::hash::HashKey::newHashWithMove(), osl::Sennichite::NORMAL(), and table.
|
static |
Definition at line 256 of file repetitionCounter.cc.
References continuous_check, hash_history, RepetitionCounter(), and table.
|
inlineprivate |
Definition at line 26 of file repetitionCounter.h.
References hash_history.
Referenced by isAlmostSennichiteUnsafe(), isConsistent(), pop(), and push().
| void osl::RepetitionCounter::pop | ( | ) |
Definition at line 119 of file repetitionCounter.cc.
References osl::alt(), continuous_check, hash_history, order(), table, and osl::hash::HashKey128::turn().
| void osl::RepetitionCounter::printMatches | ( | const HashKey & | key | ) | const |
Definition at line 209 of file repetitionCounter.cc.
References table.
| void osl::RepetitionCounter::push | ( | const HashKey & | key, |
| const NumEffectState & | state ) |
指した後の局面を記録
Definition at line 91 of file repetitionCounter.cc.
References osl::NumEffectState::inCheck(), and push().
|
private |
Definition at line 65 of file repetitionCounter.cc.
References osl::alt(), checkCount(), continuous_check, hash_history, order(), table, and osl::hash::HashKey128::turn().
Referenced by push(), push(), push(), and RepetitionCounter().
| void osl::RepetitionCounter::push | ( | const NumEffectState & | state | ) |
| void osl::RepetitionCounter::push | ( | const NumEffectState & | state, |
| Move | move ) |
state の状態で move を(これから)指すことを記録
Definition at line 104 of file repetitionCounter.cc.
References osl::NumEffectState::isCheck(), osl::Move::isPass(), osl::Move::isValidOrPass(), osl::hash::HashKey::newHashWithMove(), osl::Move::player(), push(), and osl::SimpleState::turn().
|
private |
Definition at line 24 of file repetitionCounter.h.
Referenced by checkCount(), clear(), isAlmostSennichiteUnsafe(), isConsistent(), maybeEqual(), pop(), push(), and RepetitionCounter().
|
private |
Definition at line 25 of file repetitionCounter.h.
Referenced by clear(), history(), isConsistent(), maybeEqual(), order(), pop(), push(), RepetitionCounter(), RepetitionCounter(), and RepetitionCounter().
|
private |
Definition at line 23 of file repetitionCounter.h.
Referenced by clear(), countRepetition(), distanceToSennichite(), getFirstMove(), getLastMove(), getRepetitions(), isConsistent(), isSennichite(), maybeEqual(), pop(), printMatches(), push(), RepetitionCounter(), RepetitionCounter(), and RepetitionCounter().