faecher:informatik:oberstufe:java:aoc:aoc2022:day3:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:java:aoc:aoc2022:day3:start [04.12.2022 18:48] – angelegt Frank Schiebelfaecher:informatik:oberstufe:java:aoc:aoc2022:day3:start [05.12.2022 20:35] (aktuell) – [Dinge, die man wissen muss] Frank Schiebel
Zeile 1: Zeile 1:
 ====== Day 3: Rucksack Reorganization ====== ====== Day 3: Rucksack Reorganization ======
  
 +===== Aufgabe und Input =====
 +
 +  * {{ :faecher:informatik:oberstufe:java:aoc:aoc2022:day3:problem.png?linkonly |Aufgabe}}
 +  * {{ :faecher:informatik:oberstufe:java:aoc:aoc2022:day3:input.zip |Input}} (d2e - Beispieleingabe aus dem Aufgabentext, d2i Eingabe für die Lösungen auf dieser Wikiseite)
 +
 +===== Ergebnisse =====
 +
 +
 +++++ Ergebnis Teil 1 für die Eingabe auf dieser Wikiseite (weicht ab von deiner "echten" Lösung) |
 +7428
 +++++
 +
 +++++ Ergebnis Teil 2 für die Eingabe auf dieser Wikiseite (weicht ab von deiner "echten" Lösung) |
 +2650
 +++++
 +
 +===== Hinweise & Tipps =====
 +
 +Diese Aufgabe kann man mit Arrays lösen: Wenn man die eingelesenen Zeilen (String) in ein Array aus Zeichen verwandelt, kann man folgendermaßen vorgehen: 
 +
 +{{ :faecher:informatik:oberstufe:java:aoc:aoc2022:day3:day3.drawio.png |}}
 +
 +Man benötigt also zwei verschachtelte Schleifen, die erste geht durch die erste Hälfte des Zeichen-Arrays und vergleicht in jedem Durchlauf das jeweilige Zeichen mit jedem Zeichen der zweiten Hälfte des Zeichen-Arrays. So kann man identische Zeichen finden.
 +
 +==== Dinge, die man wissen muss ====
 +
 +
 +1) Um aus einem String ein Zeichenarray zu machen, kann man die Methode toCharArray() verwenden:
 +
 +<code java>
 +// In line[0] ist der String der Zeile 
 +// dann gibt line[0].toCharArray() ein Array aus 
 +// Zeichen zurück.
 +char[] charArray = line[0].toCharArray();
 +</code>
 +
 +2) Um den ASCII Code eines Zeichens zu erhalten, kann man folgdes verwenden:
 +
 +<code java>
 +// c ist vom Typ char
 +int asciiCode =((int) c)
 +</code>
 +
 +[[https://tools.piex.at/ascii-tabelle/|Die ASCII-Tabelle findest du z.B. hier.]] So kannst du dir überlegen, wie du aus dem ASCII Wert eines Zeichens die "Priority" der Aufgabenstellung ermitteln kannst. Am besten, du packst das in eine eigene Methode.
 +++++ Hilfestellung: Priority-Methode |
 +<code java>
 +// Diese Methode ermitteln die AOC-2022-day3-priority zu einem Zeichen c
 +private int getPrio(char c) {
 +        int priority=((int) c) - 96;
 +        if (priority < 0) {
 +            priority += 58;
 +        }
 +        return priority;
 +    }
 +</code>
 +++++
 +
 +++++ Lösungsvorschlag |
 +https://codeberg.org/qg-info-unterricht/aoc2022-java/src/branch/main/day3.java
 +++++
  • faecher/informatik/oberstufe/java/aoc/aoc2022/day3/start.1670179682.txt.gz
  • Zuletzt geändert: 04.12.2022 18:48
  • von Frank Schiebel