]> git.scottworley.com Git - slidingtile/blobdiff - sliding_tile_lib.cc
successors is const
[slidingtile] / sliding_tile_lib.cc
index 6b42f284690069e13f0f2371aeb6525018fa0674..5284dab95e4d4f707310f4fab44f996fdd8f56f8 100644 (file)
@@ -62,6 +62,17 @@ bool Board::operator!=(const Board& o) const {
   return !operator==(o);
 }
 
+bool Board::operator<(const Board& o) const {
+  for (int i = 0; i < BOARD_SIZE; i++) {
+    if (board[i] < o.board[i]) {
+      return true;
+    } else if (board[i] > o.board[i]) {
+      return false;
+    }
+  }
+  return false;
+}
+
 std::istream& operator>>(std::istream& is, Board& board) {
   for (int i = 0; i < BOARD_SIZE; i++) {
     if (!is.good()) {
@@ -122,7 +133,7 @@ int Board::distance(const InvertedBoard& invo) const {
   return dist;
 }
 
-std::vector<Step*> Step::successors(std::shared_ptr<Step> shared_this) {
+std::vector<Step*> Step::successors(std::shared_ptr<Step> shared_this) const {
   std::vector<Step*> suc;
   signed char hole_pos = board.hole();
   for (int i = 0; adjacent[hole_pos][i] > 0; i++) {