My Project
dfpnRecord.h
Go to the documentation of this file.
1 /* dfpnRecord.h
2  */
3 #ifndef OSL_DFPNRECORD_H
4 #define OSL_DFPNRECORD_H
5 
7 #include "osl/basic_type.h"
8 
9 #define NAGAI_DAG_TEST
10 
11 namespace osl
12 {
13  namespace checkmate
14  {
16  {
19  uint64_t solved;
20 #ifdef NAGAI_DAG_TEST
21 
22  uint64_t dag_moves;
23 #endif
26  mutable unsigned int node_count;
27  unsigned int tried_oracle;
32  unsigned int min_pdp; // solved のmin
33  uint32_t working_threads;
38 #ifdef NAGAI_DAG_TEST
40 #endif
41 
43  : solved(0),
44 #ifdef NAGAI_DAG_TEST
45  dag_moves(0),
46 #endif
47  node_count(0), tried_oracle(0), min_pdp(ProofDisproof::PROOF_MAX),
48  working_threads(0),
50 #ifdef NAGAI_DAG_TEST
51  , dag_terminal(0)
52 #endif
53  {
54  }
55  };
56 
57  class DfpnRecord : public DfpnRecordBase
58  {
59  public:
61 
63  DfpnRecord(PieceStand black, PieceStand white) { stands[BLACK] = black; stands[WHITE] = white; }
64 
65  void setFrom(const DfpnRecordBase& src)
66  {
67  static_cast<DfpnRecordBase*>(this)->operator=(src);
68  node_count = 1;
69  solved = 0;
70  last_to = Square();
71  last_move = Move();
72  need_full_width = false_branch = false;
73 #ifdef NAGAI_DAG_TEST
74  dag_moves = 0;
75  dag_terminal = false;
76 #endif
77  }
78  unsigned int proof() const { return proof_disproof.proof(); }
79  unsigned int disproof() const { return proof_disproof.disproof(); }
81  {
82  assert(proof_pieces_set == UNSET);
83  assert((stands[BLACK] == PieceStand() && stands[WHITE] == PieceStand())
84  || stands[BLACK].isSuperiorOrEqualTo(a)
85  || stands[WHITE].isSuperiorOrEqualTo(a));
87  proof_pieces = a;
88  }
90  {
91  assert(proof_pieces_set == UNSET);
92  assert((stands[BLACK] == PieceStand() && stands[WHITE] == PieceStand())
93  || stands[BLACK].isSuperiorOrEqualTo(a)
94  || stands[WHITE].isSuperiorOrEqualTo(a));
96  proof_pieces = a;
97  }
98  const PieceStand proofPieces() const
99  {
100  assert(proof_pieces_set == PROOF);
101  return proof_pieces;
102  }
103  const PieceStand disproofPieces() const
104  {
105  assert(proof_pieces_set == DISPROOF);
106  return proof_pieces;
107  }
108  };
109  }
110 }
111 
112 
113 
114 #endif /* OSL_DFPNRECORD_H */
115 // ;;; Local Variables:
116 // ;;; mode:c++
117 // ;;; c-basic-offset:2
118 // ;;; End:
osl::checkmate::DfpnRecordBase::dag_moves
uint64_t dag_moves
合流を引き起こす指手一覧
Definition: dfpnRecord.h:22
osl::checkmate::DfpnRecord::setDisproofPieces
void setDisproofPieces(PieceStand a)
Definition: dfpnRecord.h:89
osl::checkmate::DfpnRecordBase
Definition: dfpnRecord.h:16
osl::Square
Definition: basic_type.h:532
osl::WHITE
@ WHITE
Definition: basic_type.h:10
osl::checkmate::DfpnRecord
Definition: dfpnRecord.h:58
osl::checkmate::DfpnRecord::disproof
unsigned int disproof() const
Definition: dfpnRecord.h:79
osl::checkmate::DfpnRecordBase::DISPROOF
@ DISPROOF
Definition: dfpnRecord.h:35
osl::checkmate::ProofDisproof::proof
unsigned int proof() const
Definition: proofDisproof.h:84
osl::checkmate::DfpnRecordBase::proof_pieces_set
int8_t proof_pieces_set
Definition: dfpnRecord.h:36
osl::checkmate::DfpnRecordBase::proof_pieces_candidate
PieceStand proof_pieces_candidate
solved のmax
Definition: dfpnRecord.h:31
osl::checkmate::DfpnRecord::disproofPieces
const PieceStand disproofPieces() const
Definition: dfpnRecord.h:103
osl::checkmate::DfpnRecordBase::DfpnRecordBase
DfpnRecordBase()
Definition: dfpnRecord.h:42
osl::Move
圧縮していない moveの表現 .
Definition: basic_type.h:1052
basic_type.h
osl::checkmate::DfpnRecordBase::min_pdp
unsigned int min_pdp
Definition: dfpnRecord.h:32
osl::checkmate::DfpnRecord::setProofPieces
void setProofPieces(PieceStand a)
Definition: dfpnRecord.h:80
osl::checkmate::DfpnRecord::DfpnRecord
DfpnRecord()
Definition: dfpnRecord.h:62
osl::checkmate::DfpnRecordBase::ProofPiecesType
ProofPiecesType
Definition: dfpnRecord.h:35
osl::checkmate::DfpnRecordBase::UNSET
@ UNSET
Definition: dfpnRecord.h:35
checkmate
osl::checkmate::DfpnRecordBase::working_threads
uint32_t working_threads
Definition: dfpnRecord.h:33
osl::checkmate::DfpnRecordBase::false_branch
char false_branch
Definition: dfpnRecord.h:37
proofDisproof.h
osl::checkmate::DfpnRecordBase::dag_terminal
bool dag_terminal
Definition: dfpnRecord.h:39
osl::PieceStand
片方の手番の持駒の枚数を記録するクラス.
Definition: bits/pieceStand.h:38
osl::checkmate::DfpnRecordBase::node_count
unsigned int node_count
Definition: dfpnRecord.h:26
osl::checkmate::DfpnRecordBase::need_full_width
char need_full_width
Definition: dfpnRecord.h:37
osl::checkmate::DfpnRecordBase::tried_oracle
unsigned int tried_oracle
Definition: dfpnRecord.h:27
osl::checkmate::DfpnRecordBase::proof_disproof
ProofDisproof proof_disproof
Definition: dfpnRecord.h:17
osl::checkmate::DfpnRecordBase::best_move
Move best_move
Definition: dfpnRecord.h:24
osl::checkmate::DfpnRecord::setFrom
void setFrom(const DfpnRecordBase &src)
Definition: dfpnRecord.h:65
osl::checkmate::DfpnRecord::stands
CArray< PieceStand, 2 > stands
Definition: dfpnRecord.h:60
osl::checkmate::DfpnRecordBase::proof_pieces
PieceStand proof_pieces
Definition: dfpnRecord.h:25
osl::checkmate::DfpnRecordBase::solved
uint64_t solved
手番に否定的に結果が判明したリスト loop は除く
Definition: dfpnRecord.h:19
osl::checkmate::DfpnRecord::proofPieces
const PieceStand proofPieces() const
Definition: dfpnRecord.h:98
osl::BLACK
@ BLACK
Definition: basic_type.h:9
osl::checkmate::DfpnRecordBase::last_move
Move last_move
合流検知+simulation中の簡易 無限ループ回避
Definition: dfpnRecord.h:29
NAGAI_DAG_TEST
#define NAGAI_DAG_TEST
Definition: dfpnRecord.h:9
osl::checkmate::ProofDisproof
証明数(proof number)と反証数(disproof number).
Definition: proofDisproof.h:17
osl::checkmate::DfpnRecordBase::PROOF
@ PROOF
Definition: dfpnRecord.h:35
osl::checkmate::ProofDisproof::disproof
unsigned int disproof() const
Definition: proofDisproof.h:85
osl::checkmate::DfpnRecordBase::last_to
Square last_to
Definition: dfpnRecord.h:34
osl::checkmate::DfpnRecord::DfpnRecord
DfpnRecord(PieceStand black, PieceStand white)
Definition: dfpnRecord.h:63
osl::CArray
Definition: container.h:20
osl::checkmate::DfpnRecord::proof
unsigned int proof() const
Definition: dfpnRecord.h:78
osl
Definition: additionalEffect.h:6