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.
Teil 1
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 einzelnenchar
vom Inputint number = (int)(c-'0');
: Alle Zahlen des Inputs sind alschar
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' (=ASCII48
) abzieht, dann bekommt man die eigentlich Zahl präsentiert: $52-48=4$disk.get(p)
: Um den Wert am Indexp
zu erhalten.disk.add(a)
: Um einen Werta
hinten an die ArrayList/Disk anzufügen.disk.set(a, b)
: Um den Wert an der Positiona
aufb
zu setzen.b
ersetzt also den vorherigen Wert an Positiona
.