예제 #1
0
 SearchNode(Board b, SearchNode prevNode) {
   board = b;
   prev = prevNode;
   existingMoves = prevNode.getMoves() + 1;
   manhattan = b.manhattan();
   priority = existingMoves + manhattan;
 }
예제 #2
0
 SearchNode(Board b) {
   board = b;
   prev = null;
   existingMoves = 0;
   manhattan = b.manhattan();
   priority = existingMoves + manhattan;
 }
예제 #3
0
 public static void main(String[] args) { // unit tests (not graded)
   In in = new In(args[0]); // input file
   int N = in.readInt();
   int[][] blocks = new int[N][N];
   for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) blocks[i][j] = in.readInt();
   Board bd = new Board(blocks);
   StdOut.println("dimension: " + bd.dimension());
   StdOut.println("hamming: " + bd.hamming());
   StdOut.println("Manhattan distances: " + bd.manhattan());
   StdOut.println("is goal: " + bd.isGoal());
   StdOut.print(bd);
   StdOut.print("twin: " + bd.twin());
   StdOut.println("twin equal: " + bd.equals(bd.twin()));
   StdOut.println("twin twin equal: " + bd.equals(bd.twin().twin()));
   for (Board it : bd.neighbors()) StdOut.print(it);
 }
예제 #4
0
  /**
   * main for unit tests
   *
   * @param args
   */
  public static void main(String[] args) {
    In in = new In(args[0]);
    int N = in.readInt();
    int[][] blocks = new int[N][N];
    for (int i = 0; i < N; i++) {
      for (int j = 0; j < N; j++) {
        blocks[i][j] = in.readInt();
      }
    }
    Board initial = new Board(blocks);

    // test
    StdOut.println(initial.dimension());
    StdOut.println(initial.hamming());
    StdOut.println(initial.manhattan());
    StdOut.println(initial.isGoal());
    StdOut.println(initial.toString());
    StdOut.println(initial.twin().toString());
    for (Board b : initial.neighbors()) {
      StdOut.println(b.toString());
    }
  }
예제 #5
0
  public static void main(String[] args) {
    // for each command-line argument

    // read in the board specified in the filename
    String filename = args[0];
    In in = new In(filename);
    //        StdOut.println(filename);
    int N = in.readInt();
    //        StdOut.println(N);
    int[][] tiles = new int[N][N];
    for (int i = 0; i < N; i++) {
      for (int j = 0; j < N; j++) {
        tiles[i][j] = in.readInt();
      }
    }

    // solve the slider puzzle
    Board initial = new Board(tiles);
    StdOut.println(initial.toString());
    StdOut.println(initial.hamming());
    StdOut.println(initial.manhattan());
  } // unit tests (not graded)
 /**
  * Get the priority of the board
  *
  * @return
  */
 private int priority() {
   return board.manhattan() + moves;
 }
예제 #7
0
파일: Solver.java 프로젝트: lukhar/coursera
 public int priority() {
   return moves + board.manhattan();
 }
예제 #8
0
파일: BoardTest.java 프로젝트: baboune/algo
 @Test
 public void testManahattan() {
   int[][] orig = {{8, 1, 3}, {4, 0, 2}, {7, 6, 5}};
   Board b = new Board(orig);
   assertEquals(10, b.manhattan());
 }