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 11:59] 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 12: Zeile 12:
  
 ++++ Ergebnis 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+11767
 ++++ ++++
  
 ++++ 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) |
-208567+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.1669982388.txt.gz
  • Zuletzt geändert: 02.12.2022 11:59
  • von Frank Schiebel