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.
Hilfestellung Teil 1
- 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 Richtungr
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)
sollx
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.