]> git.scottworley.com Git - slidingtile/blobdiff - sliding_tile_lib.cc
operator< for Board
[slidingtile] / sliding_tile_lib.cc
index 82402a5a185cd49453f17318705c9a81a805da77..e4f2f12723591ac320a56813eb8b3b306eaace30 100644 (file)
@@ -49,6 +49,30 @@ bool Board::is_valid() const {
   return true;
 }
 
+bool Board::operator==(const Board& o) const {
+  for (int i = 0; i < BOARD_SIZE; i++) {
+    if (board[i] != o.board[i]) {
+      return false;
+    }
+  }
+  return true;
+}
+
+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()) {