Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:java:aoc:aoc2022:day3:start [04.12.2022 18:48] – angelegt Frank Schiebel | faecher: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 ===== | ||
+ | |||
+ | * {{ : | ||
+ | * {{ : | ||
+ | |||
+ | ===== Ergebnisse ===== | ||
+ | |||
+ | |||
+ | ++++ Ergebnis Teil 1 für die Eingabe auf dieser Wikiseite (weicht ab von deiner " | ||
+ | 7428 | ||
+ | ++++ | ||
+ | |||
+ | ++++ Ergebnis Teil 2 für die Eingabe auf dieser Wikiseite (weicht ab von deiner " | ||
+ | 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: | ||
+ | |||
+ | <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(); | ||
+ | </ | ||
+ | |||
+ | 2) Um den ASCII Code eines Zeichens zu erhalten, kann man folgdes verwenden: | ||
+ | |||
+ | <code java> | ||
+ | // c ist vom Typ char | ||
+ | int asciiCode =((int) c) | ||
+ | </ | ||
+ | |||
+ | [[https:// | ||
+ | ++++ Hilfestellung: | ||
+ | <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; | ||
+ | } | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ++++ Lösungsvorschlag | | ||
+ | https:// | ||
+ | ++++ |