]> git.scottworley.com Git - slidingtile/blobdiff - sliding_tile_lib.cc
Print paths
[slidingtile] / sliding_tile_lib.cc
index b43cbbaa939df7b79172ecc7a528da67ebf23d79..82402a5a185cd49453f17318705c9a81a805da77 100644 (file)
@@ -118,3 +118,21 @@ std::vector<Step*> Step::successors(std::shared_ptr<Step> shared_this) {
   }
   return suc;
 }
+
+std::ostream& operator<<(std::ostream& os, const Step& step) {
+  if (step.prev != nullptr) {
+    os << *step.prev;
+    signed char this_hole = step.board.hole();
+    signed char prev_hole = step.prev->board.hole();
+    os << int(step.board.board[prev_hole]) << " ";
+    switch (this_hole - prev_hole) {
+      case -1:         os << "right";    break;
+      case  1:         os << "left";     break;
+      case -BOARD_DIM: os << "down";     break;
+      case BOARD_DIM:  os << "up";       break;
+      default:         os << "somehow!"; break;
+    }
+    os << std::endl;
+  }
+  return os;
+}