Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
faecher:informatik:oberstufe:java:aoc:aco2023:day3:start [03.12.2023 09:31] – angelegt Marco Kuemmel | faecher:informatik:oberstufe:java:aoc:aco2023:day3:start [03.12.2023 10:10] (aktuell) – Marco Kuemmel | ||
---|---|---|---|
Zeile 92: | Zeile 92: | ||
</ | </ | ||
++++ | ++++ | ||
+ | |||
+ | ==== Hilfestellungen Teil 2 ==== | ||
+ | * Du kannst zwei Methoden aus Teil 1 wiederverwenden! Gehe Zeile für Zeile über jeden Character. Wenn der Character c ein Stern ist ('' | ||
+ | * Die Erfassung aller benachbarten Zahlen kannst du in eine separate Methode auslagern. Dort nutzt du eine ArrayList, um die variable Anzahl aller benachbarten Zahlen abzuspeichern ('' | ||
+ | * Wenn die gefüllte ArrayList wieder in der Hauptmethode ankommt, dann musst du überprüfen, | ||
+ | |||
+ | ++++ Lösungsvorschlag | | ||
+ | <code java> | ||
+ | private ArrayList< | ||
+ | ArrayList numbers = new ArrayList< | ||
+ | for (int dy = y-1; dy <= y+1; dy++) { | ||
+ | for (int dx = x-1; dx <= x+1; dx++) { | ||
+ | if (dx < 0 || dy < 0 || dx >= inputLines.get(0).length() || dy >= inputLines.size()) { | ||
+ | continue; | ||
+ | } | ||
+ | | ||
+ | String line = inputLines.get(dy); | ||
+ | if (Character.isDigit(line.charAt(dx))) { | ||
+ | numbers.add(getFullNumber(dx, | ||
+ | dx = getEndOfNumber(dx, | ||
+ | } | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | return numbers; | ||
+ | } | ||
+ | |||
+ | public int partTwo() { | ||
+ | int summe = 0; | ||
+ | |||
+ | for (int y = 0; y < inputLines.size(); | ||
+ | String line = inputLines.get(y); | ||
+ | for (int x = 0; x < line.length(); | ||
+ | if (line.charAt(x) == ' | ||
+ | ArrayList< | ||
+ | if (numbers.size() == 2) { | ||
+ | summe += numbers.get(0) * numbers.get(1); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | return summe; | ||
+ | } | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
</ | </ | ||
</ | </ | ||