faecher:informatik:oberstufe:java:aoc:aoc2022:day2: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:day2:start [02.12.2022 12:05] – [Ergebnisse] Frank Schiebelfaecher:informatik:oberstufe:java:aoc:aoc2022:day2:start [05.12.2022 20:11] (aktuell) Frank Schiebel
Zeile 6: Zeile 6:
  
   * {{ :faecher:informatik:oberstufe:java:aoc:aoc2022:day2:problem.png?linkonly |Aufgabe}}   * {{ :faecher:informatik:oberstufe:java:aoc:aoc2022:day2:problem.png?linkonly |Aufgabe}}
-  * {{ :faecher:informatik:oberstufe:java:aoc:aoc2022:day2:input.zip |Input}} (d1e - Beispieleingabe aus dem Aufgabentext, d1i Eingabe für die Lösungen auf dieser Wikiseite)+  * {{ :faecher:informatik:oberstufe:java:aoc:aoc2022:day2:input.zip |Input}} (d2e - Beispieleingabe aus dem Aufgabentext, d2i Eingabe für die Lösungen auf dieser Wikiseite)
  
 ===== Ergebnisse ===== ===== Ergebnisse =====
Zeile 17: Zeile 17:
 ++++ Ergebnis 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) |
 13886 13886
 +++++
 +
 +===== Eine Lösung mit HashMaps =====
 +
 +Man kann beide Teile lösen indem man die Bedingungen des Spiels als assoziatives Array hinterlegt und die Transformationen von Zügen zu Punkten dann einfach aus dem assoziativen Array ausliest. 
 +
 +[[faecher:informatik:oberstufe:java:algorithmen:assoziative_arrays:start|Informationen zu assoziativen Arrays findest du auf dieser Wiki-Seite.]] In Java heißt diese Datenstruktur HashMap.
 +
 +Nun kann man die Spielmechanik für Teil 1 in einer HashMap ablegen und anschließende die Punkte direkt über den Key, den man aus dem Input erhält bestimmen:
 +
 +{{ :faecher:informatik:oberstufe:java:aoc:aoc2022:day2:auswahl_420.png |}}
 +
 +++++ Tipp Teil 1: Codegerüst |
 +<code java>
 +[...]
 +    HashMap<String,Integer> roundScore = new HashMap<String,Integer>();
 +    
 +    public day2() throws Exception {
 +        this.readInput(inputFile,' ');
 +        this.printInput();
 +        
 +        // Punkte eintragen gemäß Aufgabenstellung
 +        roundScore.put("AX", 4);
 +        roundScore.put("AY", );
 +        roundScore.put("AZ", );
 +        roundScore.put("BX", );
 +        roundScore.put("BY", );
 +        roundScore.put("BZ", );
 +        roundScore.put("CX", );
 +        roundScore.put("CY", );
 +        roundScore.put("CZ", );
 +    }
 +    
 +    public int partOne() {
 +        int score=0;
 +        for(String[] line: input) {
 +            // Die Zeilen werden am Leerzeichen getrennt eingelesen
 +            String game=line[0] + line[1];
 +            System.out.println(game);
 +            score += // Wie kann man nun den Score aus der HashMap lesen?
 +            System.out.println(score);
 +        }
 +
 +        return score;
 +    }
 +
 +</code>
 +++++
 +
 +++++ Tipp Teil 2. "Doppelte HashMap" |
 +Im Prinzip ändert sich in Teil 2 nichts, man benötigt lediglich eine zweite HashMap, die abbildet, welcher Zug ausgeführt werden muss:
 +
 +{{ :faecher:informatik:oberstufe:java:aoc:aoc2022:day2:auswahl_420a.png |}}
 +++++
 +
 +++++ Lösungsvorschlag |
 +https://codeberg.org/qg-info-unterricht/aoc2022-java/src/branch/main/day2.java
 ++++ ++++
  • faecher/informatik/oberstufe/java/aoc/aoc2022/day2/start.1669982701.txt.gz
  • Zuletzt geändert: 02.12.2022 12:05
  • von Frank Schiebel