/* *****************************************************************************
* Compilation: javac BoardChecker.java
* Execution: java BoardChecker goalNumber filename1.txt filename2.txt ...
* Dependencies: Board.java Solver.java
*
* This program creates an initial board from each filename specified
* on the command line and finds the minimum number of moves to
* reach the goal state where the goal value is given in the command line.
*
* % java BoardChecker 2048 Board3.txt Board4.txt Board5.txt
* Board6.txt Board7.txt Board8.txt
* filename moves time
* ------------------------------------------
* Board3.txt 1 0.01
* Board4.txt 2 0.00
* Board5.txt 3 0.00
* Board6.txt 2 0.00
* Board7.txt 5 0.00
* Board8.txt 0 0.00
*
**************************************************************************** */
import edu.princeton.cs.algs4.In;
import edu.princeton.cs.algs4.StdOut;
import edu.princeton.cs.algs4.Stopwatch;
public class BoardChecker {
public static void main(String[] args) {
// header
StdOut.printf("%-25s %7s %8s\n", "filename", "moves", "time");
StdOut.println("------------------------------------------");
int goal = Integer.parseInt(args[0]);
// for each command-line argument
for (int i = 1; i < args.length; i++) {
// read in the board specified in the filename
String filename = args[i];
In in = new In(filename);
int n = in.readInt();
int[][] blocks = new int[n][n];
for (int row = 0; row < n; row++)
for (int col = 0; col < n; col++)
blocks[row][col] = in.readInt();
Board initial = new Board(blocks, goal);
// check if board is solvable; if so, solve it print out number of moves
//if (initial.isSolvable()) {
Stopwatch timer = new Stopwatch();
Solver solver = new Solver(initial);
int moves = solver.moves();
double time = timer.elapsedTime();
StdOut.printf("%-25s %7d %8.2f\n", filename, moves, time);
//}
}
}
}