如何将这个代码更改成一个跟为简单的形式
public void fillPuzzle(int numOfNumbers, int numOfConstraints)
throws IllegalArgumentException{
final int quad = (int)Math.pow(size, 2);
final int quadC = quad - size;
ArrayList list = new ArrayList();
TreeSet rec = new TreeSet();
if (numOfNumbers > Math.pow(grid.length, 2))
throw new IllegalArgumentException("numOfNumbers exceeded table "
+ "size (" + quad + "). Found: " + numOfNumbers );
else if (numOfNumbers < 0)
throw new IllegalArgumentException("numOfNumbers can not be "
+ "negative. Found:" + numOfNumbers );
if (numOfConstraints > (quadC * 2))
throw new IllegalArgumentException("numOfConstraints exceeded "
+ "table size (" + (quadC * 2) + "). Found: "
+ numOfConstraints);
else if (numOfConstraints < 0)
throw new IllegalArgumentException("numOfConstraints can not be "
+ "negative. Found:" + numOfConstraints );
/* Fill the grid legally using Random. */
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
for (int k = 0; k < j; k++) {
rec.add(grid[i][k].get() - 1);
}
for (int k = 0; k < size; k++) {
if (!rec.contains(k)) {list.add(k);}
}
for (int k = 0; k < i; k++) {
list.remove(new Integer(grid[k][j].get() - 1));
}
if (!list.isEmpty()) {
int r = list.get(rdm.nextInt(list.size()));
setSquare(i, j, r + 1);
rec.add(r);
} else {
j = -1;
rec.clear();
}
list.clear();
}
rec.clear();
}
if (!isLegal()) {
fillPuzzle();
return;