21 book(copy.
book), state_index(copy.state_index), turn(copy.turn),
23 state_stack(copy.state_stack)
36 state_stack.push(state_index);
37 assert(move.
player() == turn);
42 for (
size_t i=0; i<moves.size(); i++)
44 if(moves[i].getMove() == move)
46 state_index = moves[i].getStateIndex();
49 << state_stack.top() <<
"->" << state_index <<
"\n";
54 std::cerr <<
"book: end" <<
"\n";
62 state_index = state_stack.top();
70 return state_index < 0;
76 assert(randomness >= 0);
78 int maxWin = -1, maxIndex = -1;
81 for (
size_t index=0; index<moves.size(); ++index)
83 Move move=moves[index].getMove();
84 const int curIndex = moves[index].getStateIndex();
85 const int winNum = (
book.getWinCount(curIndex)
87 const int loseNum = (
book.getLoseCount(curIndex)
90 std::cerr << move <<
"," << winNum <<
"/" << loseNum << std::endl;
93 if (winNum >= maxWin + randomness)
101 if (loseNum >= maxWin + randomness)
109 std::cerr << std::endl;
112 return moves[maxIndex].getMove();