diff --git a/src/main/java/de/deversmann/domain/CSVReader.java b/src/main/java/de/deversmann/domain/CSVReader.java index 42b8c90..7ebfe1a 100644 --- a/src/main/java/de/deversmann/domain/CSVReader.java +++ b/src/main/java/de/deversmann/domain/CSVReader.java @@ -4,36 +4,54 @@ import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; +import java.util.List; public class CSVReader { - /** - * Liest die CSV-Datei ein und gibt die enthaltenen Werte als zweidimensionales int-Array zurück. - * - * @param csvFile Pfad zur CSV-Datei - * @return zweidimensionales Array, das die Zahlen aus der CSV enthält - * @throws IOException wenn ein Fehler beim Lesen auftritt - */ - public int[][] readCsvToIntArray(String csvFile) throws IOException { - ArrayList rows = new ArrayList<>(); + public PuzzleData readPuzzleWithSolution(String csvFile) throws IOException { + List puzzleRows = new ArrayList<>(); + List solutionCoordinates = new ArrayList<>(); try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) { String line; + boolean inSolutionPart = false; + while ((line = br.readLine()) != null) { - String[] tokens = line.split(","); - int[] row = new int[tokens.length]; - for (int i = 0; i < tokens.length; i++) { - row[i] = Integer.parseInt(tokens[i].trim()); + line = line.trim(); + if (line.isEmpty()) { + continue; + } + if (line.startsWith("//Lösung") || line.startsWith("//")) { + inSolutionPart = true; + continue; + } + + if (!inSolutionPart) { + // Puzzle-Teil + String[] tokens = line.split(","); + int[] rowValues = new int[tokens.length]; + for (int i = 0; i < tokens.length; i++) { + rowValues[i] = Integer.parseInt(tokens[i].trim()); + } + puzzleRows.add(rowValues); + } else { + // Lösungsteil + String[] coords = line.split(","); + if (coords.length == 2) { + int row = Integer.parseInt(coords[0].trim()); + int col = Integer.parseInt(coords[1].trim()); + solutionCoordinates.add(new int[]{row, col}); + } } - rows.add(row); } } - // ArrayList in 2D-Array umwandeln - int[][] result = new int[rows.size()][]; - for (int i = 0; i < rows.size(); i++) { - result[i] = rows.get(i); + // puzzleRows -> 2D-Array + int[][] puzzleArray = new int[puzzleRows.size()][]; + for (int i = 0; i < puzzleRows.size(); i++) { + puzzleArray[i] = puzzleRows.get(i); } - return result; + + return new PuzzleData(puzzleArray, solutionCoordinates); } } \ No newline at end of file