====== 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: // In line[0] ist der String der Zeile // dann gibt line[0].toCharArray() ein Array aus // Zeichen zurück. char[] charArray = line[0].toCharArray(); 2) Um den ASCII Code eines Zeichens zu erhalten, kann man folgdes verwenden: // c ist vom Typ char int asciiCode =((int) c) [[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 | // 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; } ++++ ++++ Lösungsvorschlag | https://codeberg.org/qg-info-unterricht/aoc2022-java/src/branch/main/day3.java ++++