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 [05.12.2022 18:52] – [Eine Lösung mit HashMaps] Frank Schiebelfaecher:informatik:oberstufe:java:aoc:aoc2022:day2:start [05.12.2022 20:11] (aktuell) Frank Schiebel
Zeile 23: Zeile 23:
 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.  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.]]+[[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.1670266364.txt.gz
  • Zuletzt geändert: 05.12.2022 18:52
  • von Frank Schiebel