Day 3: Rucksack Reorganization

Aufgabe und Input

Aufgabe

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:

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)

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; }