18 using namespace osl::misc;
20 void qsearch(
const char *filename);
22 void usage(
const char *program_name)
24 std::cerr << program_name <<
" [-d depth] [-s skip] [-v] [-p] csafiles\n";
32 void qsearch(
const char *filename);
34 int main(
int argc,
char **argv)
36 const char *program_name = argv[0];
37 bool error_flag =
false;
42 while ((c = getopt(argc, argv,
"d:s:pvh")) != EOF)
46 case 'd':
depth = atoi(optarg);
54 default: error_flag =
true;
60 if (error_flag || (argc < 1))
63 std::cerr <<
"using table record depth " <<
depth <<
"\n";
68 for (
int i=0; i<argc; ++i)
73 catch (std::exception& e)
75 std::cerr << e.what() <<
"\n";
87 std::cerr << filename;
90 Record rec=CsaFile(filename).getRecord();
91 NumEffectState state(rec.getInitialState());
92 const vector<osl::Move>
moves=rec.getMoves();
100 Player initial_turn = state.turn();
106 qsearch_t qs(core, table);
109 std::cerr << i <<
" " << last_move <<
"\n";
113 table.
allocate(HashKey(state), 1000);
116 const int val = qs.search(state.turn(), ev, last_move, 4);
117 total_cycles += clock.
stop();
118 positions += qs.nodeCount();
123 std::cout <<
"result ";
126 std::cout << val <<
"\n";
127 if (i < moves.size())
133 const Move move = moves[i++];
134 state.makeMove(move);
137 const size_t checkmate_count = checkmate_searcher.
totalNodeCount();
138 std::cerr << total_cycles <<
" / ( " << positions
139 <<
" + " << checkmate_count <<
" ) = "
140 << total_cycles/(double)(positions + checkmate_count) <<
"\n";