Beispiel #1
0
  @Test
  public void testNeighbors() {
    int[][] orig = {{8, 1, 3}, {4, 0, 2}, {7, 6, 5}};
    Board left = new Board(new int[][] {{8, 1, 3}, {0, 4, 2}, {7, 6, 5}});
    Board right = new Board(new int[][] {{8, 1, 3}, {4, 2, 0}, {7, 6, 5}});
    Board up = new Board(new int[][] {{8, 0, 3}, {4, 1, 2}, {7, 6, 5}});
    Board down = new Board(new int[][] {{8, 1, 3}, {4, 6, 2}, {7, 0, 5}});

    Board b = new Board(orig);
    Iterator<Board> it = b.neighbors().iterator();
    Board current = it.next();
    assertEquals(left, current);
    assertEquals(right, it.next());
    assertEquals(up, it.next());
    assertEquals(down, it.next());
    assertFalse(it.hasNext());

    b = new Board(perfect);
    Board p_left = new Board(new int[][] {{1, 2, 3}, {4, 5, 6}, {7, 0, 8}});
    Board p_up = new Board(new int[][] {{1, 2, 3}, {4, 5, 0}, {7, 8, 6}});

    it = b.neighbors().iterator();
    assertEquals(p_left, it.next());
    assertEquals(p_up, it.next());
    assertFalse(it.hasNext());

    b = new Board(new int[][] {{0, 2, 3}, {4, 5, 6}, {7, 1, 8}});
    Board o_right = new Board(new int[][] {{2, 0, 3}, {4, 5, 6}, {7, 1, 8}});
    Board o_down = new Board(new int[][] {{4, 2, 3}, {0, 5, 6}, {7, 1, 8}});

    it = b.neighbors().iterator();
    assertEquals(o_right, it.next());
    assertEquals(o_down, it.next());
    assertFalse(it.hasNext());
  }
Beispiel #2
0
  public static void main(String[] args) {
    int[][] blocks = {
      {1, 2, 3},
      {4, 5, 6},
      {7, 8, 0}
    };

    Board b = new Board(blocks);
    // b.isGoal();
    // System.out.println(b.isGoal());

    // System.out.println(b.dimension());
    System.out.println(b.toString());

    // System.out.println( b.calcManhattan(0,0) );
    // System.out.println( b.calcManhattan(0,1) );

    for (Board n : b.neighbors()) {
      System.out.println(n.toString());
      System.out.println();
    }

    Board twin = b.twin();

    System.out.println("\n TWIN: \n" + twin.toString());
  }
Beispiel #3
0
  @Test
  public void testNeighbors2() {
    int[][] initial = {{0, 1, 3}, {4, 2, 5}, {7, 8, 6}};
    Board right = new Board(new int[][] {{1, 0, 3}, {4, 2, 5}, {7, 8, 6}});
    Board down = new Board(new int[][] {{4, 1, 3}, {0, 2, 5}, {7, 8, 6}});

    Board orig = new Board(initial);
    Iterator<Board> it = orig.neighbors().iterator();
    assertEquals(right, it.next());
    assertEquals(down, it.next());
    assertFalse(it.hasNext());

    Board left2 = new Board(initial);
    Board right2 = new Board(new int[][] {{1, 3, 0}, {4, 2, 5}, {7, 8, 6}});
    Board down2 = new Board(new int[][] {{1, 2, 3}, {4, 0, 5}, {7, 8, 6}});

    // Proceed on from right...
    it = right.neighbors().iterator();
    Board current = it.next();
    assertEquals(left2, current);
    assertEquals(right2, it.next());
    assertEquals(down2, it.next());
    assertFalse(it.hasNext());
  }
 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);
 }
  /**
   * 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());
    }
  }