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.
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:
Tipp Teil 1: Codegerüst
[...]
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;
}
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:
Lösungsvorschlag