====== 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
++++