15 template class PiecePairEvalTableBase<PiecePairPieceTable>;
16 template class PiecePairEval<PiecePairWithStand<PiecePairPieceTable>,PiecePairPieceTable>;
17 template class PiecePairWithStand<PiecePairPieceTable>;
35 setUp(
const char *filename)
const
37 if (! PiecePairRawEval::setUp(filename))
40 for (
unsigned int i=0; i<maxPairIndex; ++i)
42 values[i] = PiecePairRawTable::Table.value(i)
47 for (
int y=1; y<=9; ++y)
49 for (
int x=1; x<=9; ++x)
51 const Square position(x,y);
57 const unsigned int index = indexOf(position, ptypeo);
64 static const CArray<Ptype,2> gold_silver = {{
GOLD,
SILVER }};
65 for (
size_t i=0; i<gold_silver.size(); ++i) {
66 const Ptype ptype = gold_silver[i];
68 for (
int y=7; y<=9; ++y) {
69 Square right(1,y), left(9,y);
72 values[selfIndexOf(index_r)] = values[selfIndexOf(index_r)]*4/5;
73 values[selfIndexOf(index_l)] = values[selfIndexOf(index_l)]*4/5;
75 right = right.rotate180();
79 values[selfIndexOf(index_r)] = values[selfIndexOf(index_r)]*4/5;
80 values[selfIndexOf(index_l)] = values[selfIndexOf(index_l)]*4/5;
82 for (
int x=1; x<=9; ++x) {
85 values[selfIndexOf(index)] = values[selfIndexOf(index)] * 2/3;
89 values[selfIndexOf(index)] = values[selfIndexOf(index)] * 2/3;
92 for (
int y=1; y<=6; ++y) {
93 for (
int x=1; x<=9; ++x) {
96 values[selfIndexOf(index)] = values[selfIndexOf(index)] * 6/7;
100 values[selfIndexOf(index)] = values[selfIndexOf(index)] * 6/7;
103 for (
int y=7; y<=9; ++y) {
104 Square right(2,y), left(8,y);
107 values[selfIndexOf(index_r)] = values[selfIndexOf(index_r)]*7/8;
108 values[selfIndexOf(index_l)] = values[selfIndexOf(index_l)]*7/8;
110 right = right.rotate180();
114 values[selfIndexOf(index_r)] = values[selfIndexOf(index_r)]*7/8;
115 values[selfIndexOf(index_l)] = values[selfIndexOf(index_l)]*7/8;
119 for (
int y=1; y<=9; ++y)
121 for (
int x=1; x<=9; ++x)
123 const Square position(x,y);
129 const unsigned int index = indexOf(position, ptypeo);
141 CArray<int, PTYPE_SIZE> values;
142 std::copy(w, w+(
int)
PTYPE_SIZE, values.begin());
143 PiecePairPieceTable::Piece_Value.reset(values);