std::string Board::ToAsciiArt(Location last_move) const { std::stringstream s; for (unsigned char x = 'a'; x < 'a' + kBoardSize; ++x) s << " " << x; s << std::endl; for (uint i = 1; i <= kBoardSize; ++i) { for (uint j = 1; j < (i < 10 ? i : i - 1); ++j) s << " "; s << i; if (i * kBoardSizeAligned + 1 == last_move.GetPos()) s << "("; else s << " "; for (uint j = 1; j <= kBoardSize; ++j) { uint pos = i * kBoardSizeAligned + j; if (_board[pos] == 0) s << "."; else if (_board[pos] < 0) s << "#"; else s << "O"; if (pos == last_move.GetPos()) s << ")"; else if (pos + 1 == last_move.GetPos()) s << "("; else s << " "; } s << i << std::endl; } for (uint j = 0; j <= kBoardSize; ++j) s << " "; for (unsigned char x = 'a'; x < 'a' + kBoardSize; ++x) s << " " << x; return s.str(); }