Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung |
faecher:informatik:oberstufe:java:aoc:aco2023:day2:start [02.12.2023 18:46] – [Hilfestellungen Teil 2] Frank Schiebel | faecher:informatik:oberstufe:java:aoc:aco2023:day2:start [12.11.2024 06:32] (aktuell) – Frank Schiebel |
---|
| ~~NOTOC~~ |
| |
====== Tag 2 ====== | ====== Tag 2 ====== |
| ===== Aufgabe ===== |
| |
| * {{ :faecher:informatik:oberstufe:java:aoc:aco2023:day2:day2a.png?linkonly |Aufgabe}} |
| * {{ :faecher:informatik:oberstufe:java:aoc:aco2023:day2:d2input.zip |Inputdateien}}: |
| * Beispiel d2e.txt |
| * Input d2i.txt. |
| |
| |
| ++++ Kontrollergebnisse | |
| * Eingabedatei d2e.txt: |
| * Teil 1 - ''8'' |
| * Teil 2 - '''' |
| * Eingabedatei d6i.txt: |
| * Teil 1 - ''2286'' |
| * Teil 2 - ''74229'' |
| ++++ |
| |
| |
<tabs> | <tabs> |
| |
<pane id="variante1"> | <pane id="variante1"> |
==== Hilfestellungen Variante 1 ==== | ==== Hilfestellungen Teil 1 ==== |
* Du kannst/musst exzessiv die split("...")-Methode von Java nutzen. Damit zerteilst du einen String an jedem gefundenen Trennzeichen, sodass ein String-Array entsteht. Beispiel: ''line.split(":")'' erzeugt ein Array der Form ["Game 1", "4 red, 1 green, 15 blue; 6 green UND SO WEITER"]. Das Array enthält also zwei Strings: Erstens den Teil VOR dem Doppelpunkt, und zweitens den gesamten restlichen Teil hinter dem Doppelpunkt. | * Du kannst/musst exzessiv die split("...")-Methode von Java nutzen. Damit zerteilst du einen String an jedem gefundenen Trennzeichen, sodass ein String-Array entsteht. Beispiel: ''line.split(":")'' erzeugt ein Array der Form ["Game 1", "4 red, 1 green, 15 blue; 6 green UND SO WEITER"]. Das Array enthält also zwei Strings: Erstens den Teil VOR dem Doppelpunkt, und zweitens den gesamten restlichen Teil hinter dem Doppelpunkt. |
* Die split("...")-Methode kannst du mehrmals direkt hintereinander aufrufen und zwischendurch mit dem üblichen Index-Zugriff in eckigen Klammern auf einen bestimmten String des String-Arrays zugreifen. Beispiel: Der Befehl ''line.split(":")[1].split(";")'' gibt dir ein String Array, bei dem jeder String ein Herausziehen des Elfen darstellt. Das Ergebnis ist dann also z. B. die Form ["4 red, 1 green, 15 blue", "6 green, 2 red, 10 blue", "..."] | * Die split("...")-Methode kannst du mehrmals direkt hintereinander aufrufen und zwischendurch mit dem üblichen Index-Zugriff in eckigen Klammern auf einen bestimmten String des String-Arrays zugreifen. Beispiel: Der Befehl ''line.split(":")[1].split(";")'' gibt dir ein String Array, bei dem jeder String ein Herausziehen des Elfen darstellt. Das Ergebnis ist dann also z. B. die Form ["4 red, 1 green, 15 blue", "6 green, 2 red, 10 blue", "..."] |
{{ :faecher:informatik:oberstufe:java:aoc:aco2023:day2:objekte.png?nolink |}} | {{ :faecher:informatik:oberstufe:java:aoc:aco2023:day2:objekte.png?nolink |}} |
| |
Anmerkung: Das ist natürlich Overkill - vor allem für die Züge eine eigen Klasse zu implementieren, die letztlich nur die Werte für RGB enthält - aber es zeigt das Prinzip der Objektorientierung dennoch ganz gut: | Anmerkung: Das ist natürlich Overkill - vor allem für die Züge eine eigene Klasse zu implementieren, die letztlich nur die Werte für RGB enthält - aber es zeigt das Prinzip der Objektorientierung dennoch ganz gut: |
| |
* Jede Klasse definiert einen neuen Datentyp, hier erhalten wir ''Spiel'' um Spiele mit ihren Zügen zu speichern, und ''Zug'' um einen Zug zu speichern. | * Jede Klasse definiert einen neuen Datentyp, hier erhalten wir ''Spiel'' um Spiele mit ihren Zügen zu speichern, und ''Zug'' um einen Zug zu speichern. |
} | } |
</code> | </code> |
| Code zu dieser Variante: https://codeberg.org/qg-info-unterricht/aoc-bluej-2023 in den Dateien day2.java, Spiel.java und Zug.java.((Dieser Commit enthält die Änderungen zu Day 1: https://codeberg.org/qg-info-unterricht/aoc-bluej-2023/commit/5687838212e0e5bde7ff836fbc7847343b047610)) |
| |
</pane> | </pane> |
| |
Code zu dieser Variante: https://codeberg.org/qg-info-unterricht/aoc-bluej-2023 in den Dateien day2.java, Spiel.java und Zug.java.((Dieser Commit enthält die Änderungen zu Day 1: https://codeberg.org/qg-info-unterricht/aoc-bluej-2023/commit/5687838212e0e5bde7ff836fbc7847343b047610)) | |
</tabs> | </tabs> |