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

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:java:aoc:aoc2024:day10:start [04.01.2025 15:14] – [Teil 1] Marco Kuemmelfaecher:informatik:oberstufe:java:aoc:aoc2024:day10:start [04.01.2025 15:16] (aktuell) – [Teil 1] Marco Kuemmel
Zeile 10: Zeile 10:
   * Speichere den Input in einem zweidimensionalen int-Array. Jeden ''char'' c kannst du mit ''(int)(c-'0')'' in einen ''int'' casten.   * Speichere den Input in einem zweidimensionalen int-Array. Jeden ''char'' c kannst du mit ''(int)(c-'0')'' in einen ''int'' casten.
   * Iteriere anschließend über jede Koordinate des Arrays. Wenn eine Koordinate 0 ist (= Startpunkt eines Trails), dann passieren zwei Dinge:   * Iteriere anschließend über jede Koordinate des Arrays. Wenn eine Koordinate 0 ist (= Startpunkt eines Trails), dann passieren zwei Dinge:
-    - Speichere in einer ArrayList<int[]> alle Koordinaten, die ein Ende des Pfads **von der aktuellen Startposition** darstellen (Index 0 = x-Koordinate und Index 1 = y-Koordinate). Initialisiere die ArrayList also neu! Wichtig: diese ArrayList muss eine Instanzvariable sein!+    - Speichere in einer ''ArrayList<int[]>'' alle Koordinaten, die ein Ende des Pfads **von der aktuellen Startposition** darstellen (Index 0 = x-Koordinate und Index 1 = y-Koordinate). Initialisiere die ArrayList also neu! Wichtig: diese ArrayList muss eine Instanzvariable sein!
     - Anschließend startest du den rekursiven Aufruf.     - Anschließend startest du den rekursiven Aufruf.
   * Der rekursive Aufruf benötigt folgende Parameter:   * Der rekursive Aufruf benötigt folgende Parameter:
Zeile 115: Zeile 115:
 Für den Teil 2 muss nur eine **winzige Kleinigkeit** angepasst werden.  Für den Teil 2 muss nur eine **winzige Kleinigkeit** angepasst werden. 
  
-In Teil 1 geht es darum, pro Startpunkt zu zählen, wie viele Trail-Enden man erreichen kann. Jedes Trail-Ende darf also nur einmal erreicht werden. Daher mussten wir da auch markierenfalls wir ein Ende erreicht hatten.+In Teil 1 geht es darum, pro Startpunkt zu zählen, wie viele Trail-Enden man erreichen kann. Jedes Trail-Ende darf also nur einmal erreicht werden. Daher mussten wir uns auch merkenob wir ein Ende bereits erreicht hatten.
  
 In Teil 2 geht es darum, pro Startpunkt zu zählen, wie **oft** ein Trail-Ende erreicht werden kann. Jedes Trail-Ende darf also von "benachbarten" rekursiven Aufrufen beliebig oft erreicht werden.  In Teil 2 geht es darum, pro Startpunkt zu zählen, wie **oft** ein Trail-Ende erreicht werden kann. Jedes Trail-Ende darf also von "benachbarten" rekursiven Aufrufen beliebig oft erreicht werden. 
   * Es muss daher nun **kein** Trail-Ende mehr als "bereits gefunden" markiert werden.    * Es muss daher nun **kein** Trail-Ende mehr als "bereits gefunden" markiert werden. 
-  * Da nichts mehr markiert bzw. am Array "manipuliert" werden muss, musst du den ersten rekursiven Aufruf auch nicht mehr mit einer Kopie des Arrays starten.+  * Ebenso benötigt man also die ''ArrayList<int[]>'' nun nicht mehr
 Achte bei den Aufrufen der rekursiven Methoden darauf, dass du überall die korrekten, neuen Methoden für Teil 2 aufrufst. Achte bei den Aufrufen der rekursiven Methoden darauf, dass du überall die korrekten, neuen Methoden für Teil 2 aufrufst.
  
  • faecher/informatik/oberstufe/java/aoc/aoc2024/day10/start.1736003657.txt.gz
  • Zuletzt geändert: 04.01.2025 15:14
  • von Marco Kuemmel