11 #include <boost/format.hpp>
18 using namespace osl::rating;
28 cerr <<
"Usage: " << prog <<
" [-v] [-f skip] csafiles\n"
41 int main(
int argc,
char **argv)
43 const char *program_name = argv[0];
44 bool error_flag =
false;
49 while ((c = getopt(argc, argv,
"f:vh")) != EOF)
57 default: error_flag =
true;
63 if (error_flag || (argc < 1))
69 for (
int i=0; i<argc; ++i)
77 <<
"average moves/position " << moves.
getAverage() <<
"\n"
78 <<
"average order " << order.
getAverage() <<
"\n"
79 <<
"average selected score " << selected_score.
getAverage() <<
"\n"
81 <<
"average top score " << top_score.
getAverage() <<
"\n";
82 std::cout <<
"average cycles/position " << cycles.
getAverage() <<
"\n"
83 <<
"average cycles/position/move " << cycles_per_move.
getAverage()
91 const NumEffectState& state)
98 const size_t consumed = clock.
stop();
100 top_score.
add(my_moves[0].rating());
102 int count = my_moves.size();
103 int order = p ? p - &*my_moves.begin() +1 :
count;
108 if (p->
rating() < -2000) {
109 std::cerr << state <<
"selected " << *p <<
"\n" << my_moves;
116 cycles.
add(consumed);
117 cycles_per_move.
add(consumed/count);
126 rec = CsaFile(filename).getRecord();
128 catch (CsaIOError& e) {
129 std::cerr <<
"skip " << filename <<
"\n";
130 std::cerr << e.what() <<
"\n";
137 NumEffectState state(rec.getInitialState());
142 for (
size_t i=0; i<moves.size(); ++i) {
143 const Move move = moves[i];
144 assert(state.isValidMove(move));
149 state.makeMove(move);