public class Game {
public static void main(String[] args) {
new Game().solve();
// test play
// new Game().play();
// test parade
// Game game = new Game();
// for (int i=1; i<game.size-1; i++) {
// System.out.println("--------elements: " + (i+1) + "--------");
// game.printParadeResult(game.parade(game.all, i));
// }
}
int[] all = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] taken, remain;
int size = all.length;
int width = (int)Math.sqrt(size);
public void solve() {
taken = new int[] {1, 4, 8, 9};
remain = new int[] {2, 3, 5, 6, 7};
int[][] matrix = new int[width][width];
matrix[0][0] = taken[0];
matrix[1][1] = taken[1];
matrix[2][0] = taken[2];
matrix[2][2] = taken[3];
printMatrix(matrix);
int[][] result = parade(remain, remain.length);
printMatrixResult(matrix, result);
}
public void play() {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s;
int n = 0;
while (true) {
System.out.print("Input number of initial elements: ");
s = br.readLine();
try {
n = Integer.parseInt(s);
if (n<0 || n>all.length) {
throw new Exception("please input a number between 0 and 9.");
}
} catch (Exception e) {
System.out.println(e.getMessage());
System.out.println("Input error, press enter key to try again or type [go] to exit.");
s = br.readLine();
if (s != null && "go".equals(s)) {
break;
}
continue;
}
int[][] matrix = init(n);
printMatrix(matrix);
int[][] result = parade(remain, remain.length);
printMatrixResult(matrix, result);
System.out.println("press enter key to play again or type [go] to exit.");
s = br.readLine();
if (s != null && "go".equals(s)) {
break;
}
}
System.out.println("bye...");
} catch (Throwable e) {
e.printStackTrace();
}
}
private int[][] init(int n) {
int[][] matrix = new int[width][width];
for (int i=0; i<width; i++) {
for (int j=0; j<width; j++) {
matrix[i][j] = 0;
}
}
int index;
taken = new int[n];
remain = new int[all.length-n];
StringBuffer sb = new StringBuffer(",");
for (int i=0; ; ) {
index = ((int)(Math.random()*100)) % all.length;
if (sb.indexOf(","+index+",") >= 0) {
continue;
}
sb.append(index).append(",");
taken[i++] = all[index];
if (i==n) {
break;
}
}