Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:java:aoc:aoc2022:day1:start [01.12.2022 15:40] – Frank Schiebel | faecher:informatik:oberstufe:java:aoc:aoc2022:day1:start [05.12.2022 18:49] (aktuell) – [Hilfestellungen] Frank Schiebel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Day 1 ====== | ====== Day 1 ====== | ||
+ | |||
+ | ===== Aufgabe und Input ===== | ||
+ | |||
* {{ : | * {{ : | ||
* {{ : | * {{ : | ||
+ | ===== Ergebnisse ===== | ||
- | ++++ Lösung | + | ++++ Ergebnis |
70509 | 70509 | ||
++++ | ++++ | ||
- | ++++ Lösung | + | ++++ Ergebnis |
208567 | 208567 | ||
++++ | ++++ | ||
+ | |||
+ | ===== Hilfestellungen ===== | ||
+ | |||
+ | ++++ Tipp 1 | | ||
+ | Prinzipiell muss man die Eingabedatei Zeile für Zeile lesen und die Zahlen solange addieren, bis eine Leerzeile kommt. Nun kann man entscheiden, | ||
+ | ++++ | ||
+ | |||
+ | |||
+ | ++++ Tipp 2: Kommentiertes Programmgerüst für Teil 1 | | ||
+ | <code java> | ||
+ | public int partOne() { | ||
+ | int maxCalories=0; | ||
+ | int packCalories=0; | ||
+ | for(String line[]: input) { | ||
+ | String zeilenString=line[0]; | ||
+ | |||
+ | if(!zeilenString.equals("" | ||
+ | // Wenn es keine Leerzeile ist: | ||
+ | // zu packCalories hinzuzählen, | ||
+ | // muss der String in eine Integer Zahl umgewandelt werden | ||
+ | // mit Integer.parseInt(); | ||
+ | FIXME Hier fehlt was | ||
+ | } else { | ||
+ | // Wenn es eine Leerzeile ist: | ||
+ | // Schauen, ob packCalories größer ist als maxCalories. | ||
+ | // Wenn ja, merken, dann packCalories auf Null | ||
+ | // zurücksetzen. | ||
+ | FIXME Hier fehlt was | ||
+ | } | ||
+ | } | ||
+ | |||
+ | return maxCalories; | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | |||
+ | ++++ Tipp 3: Lösungsvorschlag für Teil 1 | | ||
+ | <code java> | ||
+ | public int partOne() { | ||
+ | int maxCalories=0; | ||
+ | int packCalories=0; | ||
+ | for(String line[]: input) { | ||
+ | String zeilenString=line[0]; | ||
+ | |||
+ | if(!zeilenString.equals("" | ||
+ | // Wenn es keine Leerzeile ist: | ||
+ | // zu packCalories hinzuzählen, | ||
+ | // muss der String in eine Integer Zahl umgewandelt werden | ||
+ | // mit Integer.parseInt(); | ||
+ | packCalories=packCalories+Integer.parseInt(zeilenString); | ||
+ | } else { | ||
+ | // Wenn es eine Leerzeile ist: | ||
+ | // Schauen, ob packCalories größer ist als maxCalories. | ||
+ | // Wenn ja, merken, dann packCalories auf Null | ||
+ | // zurücksetzen. | ||
+ | if (packCalories > maxCalories) { | ||
+ | maxCalories = packCalories; | ||
+ | } | ||
+ | packCalories=0; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | return maxCalories; | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ++++ Tipp 4: Ein kleiner Hinweis zu Teil 2 | | ||
+ | Für den Teil zwei muss man am Ende die 3 größten Kalorienpakete kennen, also muss man prüfen, wo sich das aktuelle Paket in dieser " | ||
+ | |||
+ | Alternativ kann man *alle* Kalorienpakete in eine ArrayList speichern, diese am Ende sortoieren und dann die ersten drei Elemente addieren. | ||
+ | ++++ | ||
+ | |||
+ | ++++ Lösungsvorschlag | | ||
+ | Ein Lösungsvorschlag findest du dort: | ||
+ | https:// | ||
+ | ++++ | ||
+ | |||
+ | |||
+ | |||
+ | |||