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

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:java:aoc:aoc2022:day3:start [05.12.2022 20:06] Frank Schiebelfaecher:informatik:oberstufe:java:aoc:aoc2022:day3:start [05.12.2022 20:35] (aktuell) – [Dinge, die man wissen muss] Frank Schiebel
Zeile 10: Zeile 10:
  
 ++++ Ergebnis Teil 1 für die Eingabe auf dieser Wikiseite (weicht ab von deiner "echten" Lösung) | ++++ Ergebnis Teil 1 für die Eingabe auf dieser Wikiseite (weicht ab von deiner "echten" Lösung) |
-11767+7428
 ++++ ++++
  
 ++++ Ergebnis Teil 2 für die Eingabe auf dieser Wikiseite (weicht ab von deiner "echten" Lösung) | ++++ Ergebnis Teil 2 für die Eingabe auf dieser Wikiseite (weicht ab von deiner "echten" Lösung) |
-13886+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.1670270776.txt.gz
  • Zuletzt geändert: 05.12.2022 20:06
  • von Frank Schiebel