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:43] – [Hilfestellungen] Frank Schiebelfaecher:informatik:oberstufe:java:aoc:aoc2022:day1:start [05.12.2022 18:49] (aktuell) – [Hilfestellungen] Frank Schiebel
Zeile 23: Zeile 23:
 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. 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.1669909432.txt.gz
  • Zuletzt geändert: 01.12.2022 15:43
  • von Frank Schiebel