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

Dies ist eine alte Version des Dokuments!


Tag 19 - Aplenty

  • Speichere jeden Workflow in einer Hashmap von <String, Workflow>. Nutze für jeden Workflow (jede Zeile) eine eigene Klasse.
  • Der Key (String) ist dabei der vorderste String des Workflows vor den geschweiften Klammern.
  • Die Klasse Workflow speichert eine ArrayList von String-Arrays. Jede einzelne Regel wird in ihre 4 Bestandteile zerlegt (x/m/a/s, größer/kleiner, Vergleichswert und Folgezustand). Diese 4 Bestandteile werden in einem String-Array gespeichert. Da die Buchstaben x/m/a/s immer in dieser Reihenfolge bei den Parts (letzte Zeilen des Inputs) erscheinen, ist es äußerst sinnvoll, diese direkt durch die Indizes 0, 1, 2 und 3 zu ersetzen. Der letzte Zeil des Workflows (der sonst-Fall) kann separat als String gespeichert werden.
  • Außerdem benötigt die Klasse Workflow noch eine Methode calculate(int[] in), welche ein int[]-Array als Parameter entgegennimmt (dazu gleich), und den Nachfolge-Zustand zurückgibt: Überprüfe für jede einzelne Regel im Workflow, ob ein Vergleich true ergibt, dann gib den Nachfolge-Zustand zurück.
  • In der Hauptmethode müssen nach den Workflows noch die Teile/Parts eingelesen werden. Speichere jeweils die 4 Zahlenwerte direkt in einem int[]-Array der Größe 4 hab und stecke alle Arrays in eine ArrayList<int[]>.
  • Prüfe nun für jeden Part in einer Endlosschleife immer wieder was der Nachfolge-Workflow ist. Sobald der Workflow "A" oder "R" ist, kannst du mit break die Schleife abbrechen.

Lösungsvorschlag Klasse Workflow

Lösungsvorschlag Teil 1

  • faecher/informatik/oberstufe/java/aoc/aco2023/day19/start.1703186737.txt.gz
  • Zuletzt geändert: 21.12.2023 19:25
  • von Marco Kuemmel