diff --git a/.gitignore b/.gitignore index ba7ce42..236475c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *.swp +*.class .ipynb_checkpoints __pycache__ euler.sublime-workspace diff --git a/other/e096.java b/other/e096.java new file mode 100644 index 0000000..65ebcf0 --- /dev/null +++ b/other/e096.java @@ -0,0 +1,38 @@ +import java.io.File; +import java.io.FileReader; +import java.io.FileNotFoundException; +import java.util.Scanner; + + +class Main { + public static void main(String[] args) { + int N_SUDOKUS = 50; + + Sudoku[] sudokus = new Sudoku[N_SUDOKUS]; + + try { + File f = new File("../txt/e096.txt"); + Scanner s = new Scanner(f); + for (int i = 0; i < N_SUDOKUS; i++) { + sudokus[i] = new Sudoku(); + sudokus[i].loadFieldFromScanner(s); + } + s.close(); + } catch (FileNotFoundException e) { + System.out.println("An error occurred."); + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + + int s = 0; + for (int i = 0; i < N_SUDOKUS; i++) { + // sudokus[i].printField(); + sudokus[i].solveSudoku(); + s += sudokus[i].getThreeDigits(); + // sudokus[i].printField(); + } + System.out.println("e096: " + s); + } +} + diff --git a/other/sudoku.java b/other/sudoku.java index 4a8f961..af4e8b7 100644 --- a/other/sudoku.java +++ b/other/sudoku.java @@ -34,6 +34,40 @@ class Sudoku { System.out.println(fieldOut); } + int getThreeDigits() { + int i = 0; + i += fieldValues[2]; + i += fieldValues[1] * 10; + i += fieldValues[0] * 100; + return i; + } + + void loadFieldFromScanner(Scanner s) throws Exception { + int currentField = 0; + + if (!s.hasNextLine()) { + throw new Exception("No lines to read"); + } + + if (!s.nextLine().startsWith("Grid")) { + throw new Exception("Not at start of grid"); + } + + while (s.hasNextLine()) { + String line = s.nextLine(); + for (int i = 0; i < line.length(); i++) { + int v = line.charAt(i) - (int) '0'; + fieldValues[currentField] = v; + currentField += 1; + } + if (currentField == 81) { + break; + } + } + + return; + } + /** Function asks for an file name which * should contain a sudoku and this sudoku * into fieldValues, Empty fields should @@ -131,20 +165,5 @@ class Sudoku { return false; } - } -/** This class is to test the - * Sudoku class and it's functions - */ -class SudokuDemo { - public static void main(String[] args) { - System.out.println("Sudoku demo loading..."); - Sudoku s = new Sudoku(); - s.loadFieldFromFile(); - s.printField(); - //s.testAllowed(); - s.solveSudoku(); - s.printField(); - } -}