faecher:informatik:oberstufe:java:aoc:aoc2022:day1:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

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 Schiebelfaecher: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 =====
 +
  
   * {{ :faecher:informatik:oberstufe:java:aoc:aoc2022:day1:day01.png?linkonly |Aufgabe}}   * {{ :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)   * {{ :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 =====
  
  
-++++ Lösung Teil 1 für die Eingabe auf dieser Wikiseite (weicht ab von deiner "echten" Lösung) |+++++ Ergebnis Teil 1 für die Eingabe auf dieser Wikiseite (weicht ab von deiner "echten" Lösung) |
 70509 70509
 ++++ ++++
  
-++++ Lösung Teil 2 für die Eingabe auf dieser Wikiseite (weicht ab von deiner "echten" Lösung) |+++++ Ergebnis Teil 2 für die Eingabe auf dieser Wikiseite (weicht ab von deiner "echten" Lösung) |
 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, 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 |
 +<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, 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;
 +    }
 +
 +</code>
 +++++
 +
 +
 +++++ 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, 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;
 +    }
 +
 +</code>
 +++++
 +
 +++++ 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
 +++++
 +
 +
 +
 +
  
  • faecher/informatik/oberstufe/java/aoc/aoc2022/day1/start.1669909200.txt.gz
  • Zuletzt geändert: 01.12.2022 15:40
  • von Frank Schiebel