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

Dies ist eine alte Version des Dokuments!


Tag 10 - Pipe Maze

Die heutige Aufgabe war nicht ganz einfach zu programmieren. Man musste viele Fälle einzeln durch if-else abdecken.
  • Wandle die Eingabe in ein zweidimensionales char-Array um. Speichere dieses am besten als Instanzvariable um flexibel darauf zugreifen zu können. Merke dir dabei direkt die Start-Koordinaten vom Buchstaben "S".
  • Erstelle eine Hilfsmethode die du häufiger benötigen wirst: getDirection(char from, char c). Die Methode soll uns sagen, in welcher Richtung man einen Buchstaben wieder verlässt, wenn man ihn aus einer bestimmten Richtung betritt. Du kannst dazu t, b, l, r nutzen für top, bottom, left, right. Bsp.: getDirection(t, L) gibt die Richtung r zurück. Du wirst für diese Methode zahlreiche Bedingungen überprüfen müssen. Denke auch an den Fall, dass man etwas falsches prüft - dann soll eine "Fehlerbuchstabe" zurückgegeben werden. Bsp.: getDirection(l, L) soll x zurückgeben.
  • Prüfe nun für die Startkoordinate in alle vier Richtungen, ob diese Richtungen möglich wären, oder nicht (bei zweien wirst du bei der Richtungsüberprüfung den Fehlerbuchstaben x bekommen.
  • Wiederhole nun bis du einmal im Kreis gelaufen bist und wieder bei "S" angelangt bist:
    • Je nach Richtung, in die du dich bewegst, änderst du deine x- oder y-Koordinate.
    • Lasse dir für diese neue Koordinate wieder die nächste Richtung mithilfe der oberen Methode geben.
    • Pro Schritt erhöhst du den Schrittzähler.
  • Am Ende ist das Ergebnis die Hälfte des Schrittzählers.

Lösungsvorschlag

  • faecher/informatik/oberstufe/java/aoc/aco2023/day10/start.1702228745.txt.gz
  • Zuletzt geändert: 10.12.2023 17:19
  • von Marco Kuemmel