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