+
+std::ostream& operator<<(std::ostream& os, const Board& board) {
+ for (int i = 0; i < BOARD_SIZE; i++) {
+ if (i > 0) {
+ os << " ";
+ }
+ os << int(board.board[i]);
+ }
+ return os;
+}
+
+signed char Board::hole() const {
+ for (int i = 0; i < BOARD_SIZE; i++) {
+ if (board[i] == 0) {
+ return i;
+ }
+ }
+ throw std::runtime_error("Board with no hole");
+}