faecher:informatik:oberstufe:java:aoc:aco2023:day2:start

Dies ist eine alte Version des Dokuments!


Tag 2

  • Du kannst/musst exzessiv die split("…")-Methode von Java nutzen. Damit zerteilst du einen String an jedem gefundenen Trennzeichen, sodass ein String-Array entsteht. Beispiel: line.split(":") erzeugt ein Array der Form ["Game 1", "4 red, 1 green, 15 blue; 6 green UND SO WEITER"]. Das Array enthält also zwei Strings: Erstens den Teil VOR dem Doppelpunkt, und zweitens den gesamten restlichen Teil hinter dem Doppelpunkt.
  • Die split("…")-Methode kannst du mehrmals direkt hintereinander aufrufen und zwischendurch mit dem üblichen Index-Zugriff in eckigen Klammern auf einen bestimmten String des String-Arrays zugreifen. Beispiel: Der Befehl line.split(":")[1].split(";") gibt dir ein String Array, bei dem jeder String ein Herausziehen des Elfen darstellt. Das Ergebnis ist dann also z. B. die Form ["4 red, 1 green, 15 blue", "6 green, 2 red, 10 blue", "…"]
  • Unterteile jeden dieser Strings noch einmal mehr (an einem weiteren Satzzeichen), um jede einzelne Farbe zu erhalten.
  • Nun kannst du für eine einzelne Farbe (z. B. 3 green) prüfen, ob diese Anzahl für diese Farbe erlaubt ist. Dazu kannst du den String ein weiteres Mal am Leerzeichen zerteilen und für den String-Vergleich equals() benutzen.
  • Es empfiehlt sich immer wieder vorsorglich die strip() Methode zu nutzen. Diese entfernt Whitespace-Character (also z. B. ein Leerzeichen) am Anfang eines Strings und am Ende.
  • Nutze eine boolean-Variable, um festzuhalten, ob du in der aktuellen Zeile bereits eine illegale Anzahl einer Farbe gezogen hast. Dann kannst du nämlich früher die Schleifen unterbrechen (break;) und weißt am Ende auch, ob denn die aktuelle Zeilennummer aufaddiert werden muss oder nicht.

Lösungsvorschlag 1

  • faecher/informatik/oberstufe/java/aoc/aco2023/day2/start.1701513099.txt.gz
  • Zuletzt geändert: 02.12.2023 10:31
  • von Marco Kuemmel