====== Day 2: Rock Paper Scissors ====== ===== Aufgabe und Input ===== * {{ :faecher:informatik:oberstufe:java:aoc:aoc2022:day2:problem.png?linkonly |Aufgabe}} * {{ :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 ===== ++++ Ergebnis Teil 1 für die Eingabe auf dieser Wikiseite (weicht ab von deiner "echten" Lösung) | 11767 ++++ ++++ Ergebnis Teil 2 für die Eingabe auf dieser Wikiseite (weicht ab von deiner "echten" Lösung) | 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 | [...] HashMap roundScore = new HashMap(); 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; } ++++ ++++ 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 ++++