Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
faecher:informatik:oberstufe:java:aoc:aoc2024:day03:start [03.12.2024 14:48] – angelegt Marco Kuemmel | faecher:informatik:oberstufe:java:aoc:aoc2024:day03:start [03.12.2024 15:53] (aktuell) – Marco Kuemmel | ||
---|---|---|---|
Zeile 45: | Zeile 45: | ||
result += num1 * num2; | result += num1 * num2; | ||
} | } | ||
+ | } | ||
+ | |||
+ | System.out.println(result); | ||
+ | } | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ===== Teil 2 ===== | ||
+ | Für Teil 2 ist zunächst essenziell, dass man die komplette Datei als **einen zusammenhängenden String** betrachtet - **nicht** Zeile für Zeile! | ||
+ | |||
+ | Die Regel mit '' | ||
+ | ++ Was muss entfernt werden? | | ||
+ | Entfernt werden muss alles **nach** einem '' | ||
+ | ++ | ||
+ | |||
+ | Wenn man dies auf einen Eingabe-String '' | ||
+ | ++ Wie sieht die Regex aus? | | ||
+ | '' | ||
+ | ++ | ||
+ | |||
+ | Hier ist bereits berücksichtigt, | ||
+ | |||
+ | ++++ Lösungsvorschlag | | ||
+ | <code java> | ||
+ | public void partTwo() { | ||
+ | // Speichere, welche Form die mul-Operatoren haben | ||
+ | // Bei Java müssen Sonderzeichen doppelt-escaped werden: \\ | ||
+ | Pattern pattern = Pattern.compile(" | ||
+ | | ||
+ | long result = 0; | ||
+ | |||
+ | String allLines = ""; | ||
+ | for (String line: inputLines) { | ||
+ | allLines += line; | ||
+ | } | ||
+ | |||
+ | allLines = allLines.replaceAll(" | ||
+ | | ||
+ | /* Eventuell muss man hier noch nachträglich prüfen, ob es zum Ende ein | ||
+ | * don' | ||
+ | * " | ||
+ | */ | ||
+ | |||
+ | Matcher matcher = pattern.matcher(allLines); | ||
+ | |||
+ | while (matcher.find()) { | ||
+ | String mul = matcher.group(); | ||
+ | int num1 = Integer.parseInt(mul.split("," | ||
+ | int num2 = Integer.parseInt(mul.split("," | ||
+ | result += num1 * num2; | ||
} | } | ||