faecher:informatik:oberstufe:java:aoc:aco2023:day7: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:aco2023:day7:start [07.12.2023 19:29] Frank Schiebelfaecher:informatik:oberstufe:java:aoc:aco2023:day7:start [07.12.2023 19:43] (aktuell) – [Variante 2: Objekte] Frank Schiebel
Zeile 1: Zeile 1:
 +
 +~~NOTOC~~
 <tabs> <tabs>
   * [[#variante1|Variante 1]]   * [[#variante1|Variante 1]]
Zeile 264: Zeile 266:
 </pane> </pane>
 <pane id="variante2">  <pane id="variante2"> 
 +====== Variante 2: Objekte ======
 +
 +Variante zwei wieder mit Objekten:
 +
 +{{ :faecher:informatik:oberstufe:java:aoc:aco2023:day7:2023-12-07_20-31.png?nolink&600 |}}
 +
 +Wie bei den Sortieralgorithmen  [[faecher:informatik:oberstufe:algorithmen:sorting:problemstellung:start|hier]] erläutert, kann man bei Java-Klassen das "Comparable"-Interface implementieren, damit ist es möglich, in der Methode ''compareTo'' eigene Regeln festzulegen, nach denen die Objekte dieser Klasse sortiert werden sollen. Genau das benötigen wir hier:
 +
 +  * Wir erzeugen für jede Zeile in der Eingabe ein ''Hand''-Objekt, für den wir den Typ bestimmen und in einem Attribut ablegen.
 +  * Dann wollen wir die Objekte sortieren - allerdings reicht der Vergleich der Typen nicht aus, weil man bei zwei "Hands" desselben Typs die einzelnen Karten vergleichen soll.
 +  * Also implementieren wir in der Klasse Hand die Methode ''compareTo'', die genau das macht.
 +
 +Die Lösung für Teil 1 und Teil 2 findet sich im selben Code, ich habe versucht das verständlich zu kommentieren. Wenn du nicht viel Programmiererfahrung hast, musst du wahrscheinlich auch an anderer Stelle noch nachlesen:
 +
 +  * Teil 1: [[https://codeberg.org/qg-info-unterricht/aoc-bluej-2023/src/commit/a897fdacc8c6ad31785a9eb3c7bb682192a925c9/Hand.java|Hand.java]], [[https://codeberg.org/qg-info-unterricht/aoc-bluej-2023/src/commit/a897fdacc8c6ad31785a9eb3c7bb682192a925c9/day7.java|day7.java]]
 +  * Teil 1&2: [[https://codeberg.org/qg-info-unterricht/aoc-bluej-2023/src/branch/main/Hand.java|Hand.java]]  [[https://codeberg.org/qg-info-unterricht/aoc-bluej-2023/src/branch/main/day7.java|day7.java]]
 +
 +
 </pane> </pane>
 </tabs> </tabs>
  • faecher/informatik/oberstufe/java/aoc/aco2023/day7/start.1701977383.txt.gz
  • Zuletzt geändert: 07.12.2023 19:29
  • von Frank Schiebel