Dies ist eine alte Version des Dokuments!
Tag 18 - Lavaduct Lagoon
Ich habe für Teil 1 und Teil 2 verschiedene Lösungswege genutzt.
Lösungshinweise Teil 1
- Finde zunächst heraus, wie groß der auszugrabende Bereich in die Breite und die Höhe sein muss.
- Erstelle ein char[][]-Array mit der passenden Größe.
- Trage den Input-Befehlen folgend ein 't' für "Trench" (Graben) in das char[][]-Array an jeder nötigen Stelle ein. Dadurch erhältst du den kompletten geschlossenen Verlauf des äußeren Grabens.
- Abschließend füllst du von jedem äußeren Pixel an den Kanten des char[][]-Arrays per Breitensuche die leeren Felder mit einem 'o' für "outside". Danach ist jedes leere Feld ein inneres Feld. Die Summe aller Lava-Pool-Felder ist die summe aller leeren Felder und aller 't'-Felder.
Lösungshinweise Teil 2
- Für Teil 2 werden die Zahlen zu groß, sodass die Lösung aus Teil 1 nicht mehr ausreicht. Die Hauptvorgehensweise ist folgende:
- Gehe der Reihe nach die Befehle entlang. Trage aber keine Kreuze in eine 2-dimensionale Matrix, sondern betrachte nur die einzelnen Spalten (x-Werte). Führe eine ArrayList, um pro Spalte mehrere y-Werte eintragen zu können, an denen "etwas passiert".:
- Wenn du gerade nach rechts läufst, dann markierst du, dass du mit dem aktuellen y-Wert das obere Ende des Lava-Pools.
- Beim nach links laufen markierst du mit dem y-Wert das untere Ende des Lava-Pools.
- Wenn du nach unten läufst, dann ist dein oberer Startpunkt, das obere Ende des Lava-Pools. Als weiteren y-Wert trägst du ein, wie viele y-Werte du weiter nach unten zu gehen hast (das ist dann ein mögliches unteres Ende des Pools).
- Beim nach oben laufen ist der untere Startpunkt ein unteres Ende des Pools, und beim "Ziel" des nach-oben-laufens ist das obere Ende des Pools.
- Beispiel für das rechte Bild (Annahme, dass die Erstellung des Pfades im Uhrzeigersinn geschah): in der Spalte für x=5 stehen folgende y-Werte drin:
0 (wegen "rechts") 0 (wegen oberes ende von "oben")