Dies ist eine alte Version des Dokuments!
Tag 11 - Cosmic Expansion
Lösungshinweise Teil 1
- Du musst die Eingabedaten NICHT als zweidimensionales Array speichern und eine komplizierte Pfadsuche starten. Es genügt, wenn du für jede Galaxie (Raute) die korrekten (expandierten) Koordinaten speicherst und anschließend in einer verschachtelten Schleife einfach sämtliche Distanzen zwischen allen Koordinaten berechnest.
- Gehe zunächst die gesamte Eingabedatei Spalte für Spalte durch und speichere dir, welche Spalten leer sind. Speichere dir dabei direkt die expandierten x-Koordinaten. Bsp.: Wenn die Spalte 1 und 3 leer sind (bei 0 beginnen zu zählen), dann speicherst du dir die 1 (welche selbst 2 Spalten Platz benötigt!) und die 4, weil nach jeder vorkommenden Koordinate alle nachfolgenden 1 nach "rechts" rücken.
- Anschließend gehst du die Eingabedaten Zeile für Zeile durch und speicherst dir die Koordinaten alle Galaxien. Zum Speichern einer Galaxie bietet sich ein zweistelliges int-Array an. Um alle Galaxien zu speichern, eine ArrayList<int[]>.
- Speichere dir pro Zeile die y-Koordinate und pro Character die x-Koordinate.
- Wenn eine Zeile ganz leer ist (keine Raute enthält), dann wird y um eins erhöht.
- Speichere dir bei jeder Raute die Koordinaten als int-Array und füge sie der ArrayList hinzu.
- Iteriere abschließend in zwei verschachtelten Schleifen über die Kombination alle Koordinaten und rechne den Abstand der x-Werte + Abstand der y-Werte zur Gesamtsumme dazu.