Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
faecher:informatik:oberstufe:java:aoc:aoc2021:day3:start [06.12.2021 16:57] – [Teil 1] sbel | faecher:informatik:oberstufe:java:aoc:aoc2021:day3:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Tag 3: Binäre Diagnostik | ||
- | ===== Teil 1 ===== | ||
- | |||
- | Für Teil 1 reicht es aus, wenn man die Gamma-Rate bestimmt, da die Epsilon-Rate das bitweise Inverse der Gamma-Rate ist. | ||
- | |||
- | Um die Gamma-Rate zu bestimmen, muss man durch alle Zeilen der Eingabe und alle Stellen der Zahlen gehen und die Einsen zählen. Ein Methode, die hier wertvoll ist, ist '' | ||
- | |||
- | <code java> | ||
- | char[] chars = line[0].toCharArray(); | ||
- | </ | ||
- | |||
- | So erhält man ein Array aus '' | ||
- | |||
- | <code java> | ||
- | int numBits = list.get(0)[0].toCharArray().length; | ||
- | </ | ||
- | |||
- | ===== Teil 2 ===== | ||
- | |||
- | In Teil zwei kann man die ArrayList verkleinern, | ||
- | |||
- | <code java> | ||
- | // Erstelle eine Kopie der InputListe mit dem Namen myList | ||
- | ArrayList< | ||
- | // Erstelle eine Liste, die die zu löschenden Elemente aufnimmt | ||
- | ArrayList< | ||
- | |||
- | |||
- | // Für jedes Bit... | ||
- | |||
- | // Finde raus, welche zeilen gelöscht werden müssen | ||
- | // füge diese in die toDelete Liste ein: | ||
- | [...] | ||
- | toDelete.add(line); | ||
- | [...] | ||
- | // to Delete aus myList löschen | ||
- | myList.removeAll(toDelete); | ||
- | // toDelete leeren für den nächsten Bit-Durchlauf | ||
- | toDelete.clear(); | ||
- | // Bit-Durchläufe abbrechen, wenn es nur noch | ||
- | // einen Wert gibt | ||
- | if (myList.size() == 1) { | ||
- | break; | ||
- | } | ||
- | [...] | ||
- | </ |