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
11namespace osl
12{
13 namespace checkmate
14 {
16 {
19 uint64_t solved;
20#ifdef NAGAI_DAG_TEST
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
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),
50#ifdef NAGAI_DAG_TEST
51 , dag_terminal(0)
52#endif
53 {
54 }
55 };
56
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();
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 }
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:
圧縮していない moveの表現 .
片方の手番の持駒の枚数を記録するクラス.
const PieceStand disproofPieces() const
Definition dfpnRecord.h:103
CArray< PieceStand, 2 > stands
Definition dfpnRecord.h:60
unsigned int disproof() const
Definition dfpnRecord.h:79
void setFrom(const DfpnRecordBase &src)
Definition dfpnRecord.h:65
unsigned int proof() const
Definition dfpnRecord.h:78
const PieceStand proofPieces() const
Definition dfpnRecord.h:98
void setDisproofPieces(PieceStand a)
Definition dfpnRecord.h:89
void setProofPieces(PieceStand a)
Definition dfpnRecord.h:80
DfpnRecord(PieceStand black, PieceStand white)
Definition dfpnRecord.h:63
証明数(proof number)と反証数(disproof number).
unsigned int disproof() const
unsigned int proof() const
#define NAGAI_DAG_TEST
Definition dfpnRecord.h:9
@ WHITE
Definition basic_type.h:10
@ BLACK
Definition basic_type.h:9
PieceStand proof_pieces_candidate
solved のmax
Definition dfpnRecord.h:31
uint64_t solved
手番に否定的に結果が判明したリスト loop は除く
Definition dfpnRecord.h:19
Move last_move
合流検知+simulation中の簡易 無限ループ回避
Definition dfpnRecord.h:29
uint64_t dag_moves
合流を引き起こす指手一覧
Definition dfpnRecord.h:22