diff -r b8588e318001 -r 8ddf4af937d7 src/de/uapcore/sudoku/Solver.java --- a/src/de/uapcore/sudoku/Solver.java Sat Jan 26 18:43:49 2013 +0100 +++ b/src/de/uapcore/sudoku/Solver.java Sat Jan 26 19:34:31 2013 +0100 @@ -38,11 +38,11 @@ public boolean check(Field f) { int line[]; for (int i = 0 ; i < 9 ; i++) { - line = getRow(f, i); + line = f.getRow(i); if (!valid(line)) { return false; } - line = getColumn(f, i); + line = f.getColumn(i); if (!valid(line)) { return false; } @@ -51,7 +51,7 @@ int square[][]; for (int x = 0 ; x < 3 ; x++) { for (int y = 0 ; y < 3 ; y++) { - square = getSquare(f, x, y); + square = f.getSquare(x, y); if (!valid(square)) { return false; } @@ -82,11 +82,12 @@ } private boolean valid(int[] line) { - int numbers[] = new int[9]; + int numbers[]; + numbers = new int[9]; for (int i = 0 ; i < 9 ; i++) { int l = line[i]-1; if (l >= 0) { - if (++numbers[l] > 1) { + if ((++numbers[l]) > 1) { return false; } } @@ -98,51 +99,8 @@ private boolean valid(int[][] square) { int[] line = new int[9]; for (int x = 0 ; x < 3 ; x++) { - for (int y = 0 ; y < 3 ; y++) { - line[3*x+y] = square[x][y]; - } + System.arraycopy(square[x], 0, line, 3*x, 3); } return valid(line); } - - private int[][] getSquare(Field f, int x, int y) { - if (x < 0 || x > 2 || y < 0 || y > 2) { - throw new IllegalArgumentException("Invalid square coordinates"); - } - int[][] square = new int[3][3]; - - for (int u = 0 ; u < 3 ; u++) { - for (int v = 0 ; v < 3 ; v++) { - square[u][v] = f.getCellValue(3*x+u, 3*y+v); - } - } - - return square; - } - - private int[] getRow(Field f, int y) { - if (y < 0 || y > 8) { - throw new IllegalArgumentException("Invalid row number"); - } - int row[] = new int[9]; - - for (int x = 0 ; x < 9 ; x++) { - row[x] = f.getCellValue(x, y); - } - - return row; - } - - private int[] getColumn(Field f, int x) { - if (x < 0 || x > 8) { - throw new IllegalArgumentException("Invalid column number"); - } - int column[] = new int[9]; - - for (int y = 0 ; y < 9 ; y++) { - column[y] = f.getCellValue(x, y); - } - - return column; - } }