3 #ifndef OSL_REPETITIONCOUNTER_H 4 #define OSL_REPETITIONCOUNTER_H 23 std::unique_ptr<Table>
table;
57 assert(first_move >= 0);
58 const int duration = (
order() - first_move) / 2;
59 if (continuous_check[
BLACK].back() >= duration)
61 if (continuous_check[
WHITE].back() >= duration)
92 assert(! continuous_check[attack].empty());
93 return continuous_check[attack].
back();
int getLastMove(const HashKey &key) const
key の手を最後に登録した指手番号.
std::unique_ptr< Table > table
HashKeyStack hash_history
void printMatches(const HashKey &key) const
void push(const HashKey &new_key, bool is_check)
const Sennichite isAlmostSennichite(const HashKey &key) const
このまま同形を繰り返したらどの結果になるかを返す
const HashKeyStack & history() const
int checkCount(Player attack) const
const list_t getRepetitions(const HashKey &) const
static Sennichite WHITE_LOSE()
unsigned int countRepetition(const HashKey &) const
const std::pair< Sennichite, int > distanceToSennichite(const HashKey &key) const
const Sennichite isSennichite(const NumEffectState &state, Move move) const
bool isConsistent() const
CArray< std::vector< int >, 2 > continuous_check
static Sennichite BLACK_LOSE()
static Sennichite NORMAL()
int getFirstMove(const HashKey &key) const
key の手を最初に登録した指手番号.
static bool maybeEqual(const RepetitionCounter &l, const RepetitionCounter &r)
const Sennichite isAlmostSennichiteUnsafe(int first_move) const