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:37] 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}} +  * {{ :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 | 
 +<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.1669909064.txt.gz
  • Zuletzt geändert: 01.12.2022 15:37
  • von Frank Schiebel