====== Day 1 ======
===== Aufgabe und Input =====
* {{ :faecher:informatik:oberstufe:java:aoc:aoc2022:day1:day01.png?linkonly |Aufgabe}}
* {{ :faecher:informatik:oberstufe:java:aoc:aoc2022:day1:input.zip |Input}} (d1e - Beispieleingabe aus dem Aufgabentext, d1i Eingabe für die Lösungen auf dieser Wikiseite)
===== Ergebnisse =====
++++ Ergebnis Teil 1 für die Eingabe auf dieser Wikiseite (weicht ab von deiner "echten" Lösung) |
70509
++++
++++ Ergebnis Teil 2 für die Eingabe auf dieser Wikiseite (weicht ab von deiner "echten" Lösung) |
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, ob die so erhaltene Summe die größte ist - wenn ja, ersetzt man die "bisherige größte Summe durch diese neue größte Summe.
++++
++++ Tipp 2: Kommentiertes Programmgerüst für Teil 1 |
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, dabei
// 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 |
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, dabei
// 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 "Rangliste der ersten drei einordnet" und dieses entsprechend anpassen.
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://codeberg.org/qg-info-unterricht/aoc2022-java/src/branch/main/day1.java
++++