13 void process(
int move_number,
const NumEffectState& src,
14 const vector<Move>& history,
15 const SearchInfo& info)
17 vector<Move>
moves = info.moves;
20 std::ostringstream ss;
21 NumEffectState state = src;
22 for (
int i=0; i<move_number; ++i)
23 state.makeMove(history[i]);
24 ss <<
"[(" << move_number+1 <<
") "
26 <<
"] " << info.value <<
' ';
27 state.makeMove(history[move_number]);
28 for (
size_t i=0; i<moves.size(); ++i) {
30 state, i ? moves[i-1] : history[move_number]);
31 state.makeMove(moves[i]);
34 std::cout << utf8 << std::endl;
41 while (getline(std::cin, line)) {
43 if (line[0] ==
'#')
break;
45 CsaString csa(all.c_str());
49 vector<std::string> comments;
50 vector<SearchInfo> info;
51 record.getMoves(moves, times, comments, info);
52 if (info.empty() || info.back().moves.empty())
54 while (last_output < (
int)info.size()) {
56 process(last_output, csa.getInitialState(),
57 moves, info[last_output]);
61 catch (CsaIOError& e) {
63 std::cerr <<
"oops " << e.what() <<
' ' << last_output <<
'\n';