faecher:informatik:oberstufe:java:aoc:aco2023:day7:start

Dies ist eine alte Version des Dokuments!


Hilfestellung Teil 1

Die Aufgabe ist schwierig zu beschreiben und entsprechend sind die hier gelisteten Tipps möglicherweise nur eingeschränkt hilfreich.

  • Es ist sinnvoll, die Karten nach zwei Schemas zu sortieren. Einmal nach der Kartentyp (5 identisch, 4 identisch, etc.) und dann pro Typ noch nach dem Wert der einzelnen Karten (A, K, Q, …).
  • Ein möglicher Datentyp, um all diese Dinge zu berücksichtigen, ist eine ArrayList<ArrayList<String[]> >. Was ist damit gemeint? Die äußere ArrayList enthält insgesamt 7 ArrayLists, welche jeweils alle Karten nach Kartentyp sortiert enthalten. Die erste innere ArrayList enthält also z. B. alle Karten, bei denen alle 5 identisch sind, etc. Pro innerer ArrayList wird ein String-Array gespeichert. Dieses stellt die beiden String-Bestandteile jeder Zeile dar. Dadurch ist gewährleistet, dass der Kartenwert jeder Karte immer fest zugeordnet ist und auffindbar bleibt (auch nach Umsortierungen).
  • Die inneren String-Arrays können als erstes erstellt werden.
  • Pro String-Array muss nun der Typ der Karte ermittelt werden und das String-Array der passenden ArrayList zugefügt werden.
  • Am Ende muss man alle eingetragenen ArrayLists in der richtigen Reihenfolge durchlaufen, die String-Arrays pro ArrayList korrekt sortieren und alle Werte zusammenrechnen.
  • Für die korrekte Sortierung wird man wiederum vermutlich nicht herumkommen einen eigenen Comparator zu erstellen, mit dem man eine eigene/neue Sortierreihenfolge erzwingen kann.

Dieser nachfolgende Lösungsvorschlag ist an einzelnen Stellen nicht besonders schön programmiert. Funktionieren tut er dennoch.

Lösungsvorschlag

  • faecher/informatik/oberstufe/java/aoc/aco2023/day7/start.1701959178.txt.gz
  • Zuletzt geändert: 07.12.2023 14:26
  • von Marco Kuemmel