faecher:informatik:oberstufe:java:aoc:aoc2021:day3: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:aoc2021:day3:start [06.12.2021 15:49] – [Teil 1] sbelfaecher:informatik:oberstufe:java:aoc:aoc2021:day3:start [18.12.2021 09:30] (aktuell) – [Teil 1] Mareike Nutz
Zeile 1: Zeile 1:
 ====== Tag 3: Binäre Diagnostik  ====== ====== Tag 3: Binäre Diagnostik  ======
 +
 +===== Aufgabe, Beispiele, Input =====
 +
 +  * Aufgabe: https://adventofcode.com/2021/day/3
 +  * Input-Dateien: {{ d3.zip |}}
 +  * Ergebnis für die Datei ''d3i'': ++ Teil 1 | 2972336 ++ ++Teil2 | 3368358 ++
  
 ===== Teil 1 ===== ===== Teil 1 =====
Zeile 11: Zeile 17:
 </code> </code>
  
-So erhält man ein Array aus ''char''-Werten, so kann man stellenweise über die Werte der Zeilen iterieren und die Einsen zählen. Bechten sollte man, dass die Werte in der Beispieldatei kürzer sind, als die im Input, hier muss flexibel programmiert werden, z.B. indem man mal schaut, wie lange die erste Zahl ist:+So erhält man ein Array aus ''char''-Werten, so kann man stellenweise über die Werte der Zeilen iterieren und die Einsen zählen. Beachten sollte man, dass die Werte in der Beispieldatei kürzer sind, als die im Input, hier muss flexibel programmiert werden, z.B. indem man mal schaut, wie lange die erste Zahl ist:
  
 <code java> <code java>
 int numBits = list.get(0)[0].toCharArray().length; int numBits = list.get(0)[0].toCharArray().length;
 +</code>
 +
 +===== Teil 2 =====
 +
 +In Teil zwei kann man die ArrayList verkleinern, indem man sich bei jedem Durchlauf merkt, welche Zeilen gelöscht werden sollen:
 +
 +<code java>
 +// Erstelle eine Kopie der InputListe mit dem Namen myList
 +ArrayList<String[]> myList = new ArrayList<String[]>(list);
 +// Erstelle eine Liste, die die zu löschenden Elemente aufnimmt
 +ArrayList<String[]> toDelete = new ArrayList<String[]>();
 +
 +
 +// 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;
 +          }
 +[...]
 </code> </code>
  • faecher/informatik/oberstufe/java/aoc/aoc2021/day3/start.1638805749.txt.gz
  • Zuletzt geändert: 06.12.2021 15:49
  • von sbel