18 using namespace osl::eval;
23 cerr <<
"Usage: " << prog <<
" csa-filename"
28 void show(
const char *filename);
32 int main(
int argc,
char **argv)
34 const char *program_name = argv[0];
35 bool error_flag =
false;
40 while ((c = getopt(argc, argv,
"e:vh")) != EOF)
48 default: error_flag =
true;
60 for (
int i=0; i<argc; ++i)
69 const Piece piece = state.pieceOf(i);
72 const NumEffectState removed(state.emulateCapture(piece, piece.
owner()));
80 CArray<int,40>
count = {{ 0 }};
83 const Piece piece = state.pieceOf(i);
86 const NumEffectState removed(state.emulateCapture(piece, piece.
owner()));
89 const Piece piece2 = state.pieceOf(j);
92 const NumEffectState removed2(removed.emulateCapture(piece2, piece2.
owner()));
94 values[j] += eval_removed.
value() - eval_removed2.
value();
100 values[i] /= count[i];
103 void show(
const NumEffectState& state)
107 static const double scale = 200.0
112 make1(state, eval, values);
114 make2(state, eval, values);
115 printer.
print(state);
116 for (
int z=0; z<2; ++z) {
121 const Piece piece = state.pieceOf(i);
128 std::cout <<
" (" << piece.
square().
x() <<
"," << piece.
square().
y()
129 <<
") " << (int)(values[piece.
number()]*scale);
135 std::cout <<
"total " << (int)(eval.
value()*scale)
136 <<
" " << eval.
value()
137 <<
" (progress: " << eval.
progress16().value()
146 void show(
const char *filename)
148 CsaFile file(filename);
149 const vector<osl::Move>
moves = file.getRecord().getMoves();
150 NumEffectState state(file.getInitialState());
151 for (
unsigned int i=0; i<moves.size(); i++)
154 const Move m = moves[i];