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

Dies ist eine alte Version des Dokuments!


Day 9: Disk Fragmenter

Der erste Teil ist ziemlich einfach und gleichzeitig eine wunderbare Übung zum Umgang mit Arrays bzw. ArrayLists und Schleifen! Teil zwei ist hingegen einiges kniffliger und unübersichtlicher zu programmieren.

Wichtige Java-Befehle:

  • ArrayList<Integer> disk = new ArrayList();: Zum Erstellen der ArrayList, um darin alle Werte der Disk zu speichern.
  • disk.size(): Um die Länge der ArrayList zu ermitteln. Äquivalent zu arrayName.length bei Arrays.
  • for (char c: inputLines.get(0).toCharArray()){…}: Zum Iterieren über jeden einzelnen char vom Input
  • int number = (int)(c-'0');: Alle Zahlen des Inputs sind als char gespeichert. Ein direktes Type-Casting von char in int ((int)c) würde dazu führen, dass man den ASCII-Wert der Zahl präsentiert bekommt. Im Fall von '4' z. B. 52! Wenn man nun zusätzlich immer noch den ASCII-Wert des chars '0' (=ASCII 48) abzieht, dann bekommt man die eigentlich Zahl präsentiert: $52-48=4$
  • disk.get(p): Um den Wert am Index p zu erhalten.
  • disk.add(a): Um einen Wert a hinten an die ArrayList/Disk anzufügen.
  • disk.set(a, b): Um den Wert an der Position a auf b zu setzen. b ersetzt also den vorherigen Wert an Position a.

Vorgehensweise:

Lösungsvorschlag

  • faecher/informatik/oberstufe/java/aoc/aoc2024/day09/start.1733766776.txt.gz
  • Zuletzt geändert: 09.12.2024 17:52
  • von Marco Kuemmel