]> git.scottworley.com Git - slidingtile/blobdiff - sliding_tile_lib.cc
operator<< for printing for debugging
[slidingtile] / sliding_tile_lib.cc
index b8ddc154a1a829e3ce7843678c34901334ef7ddf..5037c8edbda5877b2ab2d0d2e6ac37d7cd981461 100644 (file)
@@ -1,6 +1,7 @@
 #include "sliding_tile_lib.h"
 
 #include <istream>
+#include <ostream>
 #include <stdexcept>
 
 signed char adjacent[BOARD_SIZE][5] = {
@@ -22,7 +23,7 @@ signed char adjacent[BOARD_SIZE][5] = {
   11,  14,  -1,  -1,  -1,
 };
 
-bool Board::is_valid() {
+bool Board::is_valid() const {
   bool seen[BOARD_SIZE];
   for (int i = 0; i < BOARD_SIZE; i++) {
     seen[i] = false;
@@ -65,7 +66,17 @@ std::istream& operator>>(std::istream& is, Board& board) {
   return is;
 }
 
-signed char Board::hole() {
+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;