@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()); }
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()); }
@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()); } }