Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:java:aoc:aco2023:day4:start [04.12.2023 14:56] – [Bearbeiten - Pane] Frank Schiebel | faecher:informatik:oberstufe:java:aoc:aco2023:day4:start [06.12.2023 12:19] (aktuell) – Frank Schiebel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Tag 4 ====== | + | ~~NOTOC~~ |
+ | ====== Tag 4: Scratchcards ====== | ||
+ | |||
+ | ===== Aufgabe ===== | ||
+ | |||
+ | * {{ : | ||
+ | * {{ : | ||
+ | |||
+ | ++++ Kontrollergebnisse | | ||
+ | * Eingabedatei d4e.txt: [Teil 1 - 13] [Teil 2 - 30] | ||
+ | * Eingabedatei d4i.txt: [Teil 1 - 26443] [Teil 2 - 6284877] | ||
+ | ++++ | ||
+ | |||
+ | ===== Hinweise ===== | ||
+ | |||
< | < | ||
* [[# | * [[# | ||
Zeile 99: | Zeile 113: | ||
</ | </ | ||
<pane id=" | <pane id=" | ||
- | Die Grundsätzlichen | + | Die grundsätzlichen |
{{ : | {{ : | ||
+ | Das Spielkartenobjekt hat die Attribute: | ||
+ | * cardNo - Kartennummer | ||
+ | * worth - Der Wert der Karte gemäß des Rätsels Teil 1. | ||
+ | * anzahl - Die Anzahl, die man von dieser Karte besitzt. In Teil 1 nicht nötig. | ||
+ | * winningNumbers - ArrayList mit den Gewinnzahlen. | ||
+ | * havingNumbers - ArrayList mit den Zahlen,die man " | ||
+ | Die Klasse '' | ||
+ | |||
+ | <code java> | ||
+ | | ||
+ | | ||
+ | [...] | ||
+ | | ||
+ | // Lese die Eingabedatei | ||
+ | this.readInput(inputFile); | ||
+ | | ||
+ | cards = new ArrayList<> | ||
+ | for(String line: inputLines) { | ||
+ | int cardNum = Integer.parseInt(line.split(":" | ||
+ | String numberString = line.split(":" | ||
+ | cards.add(new gameCard(cardNum, | ||
+ | } | ||
+ | } | ||
+ | [...] | ||
+ | </ | ||
+ | |||
+ | Der Konstruktor der Klasse '' | ||
+ | |||
+ | < | ||
+ | [...] | ||
+ | private ArrayList< | ||
+ | private ArrayList< | ||
+ | private int cardNo; | ||
+ | private int worth; | ||
+ | private int anzahl; | ||
+ | |||
+ | [...] | ||
+ | |||
+ | public gameCard(int cardNo, int anzahl, String allNumbers) | ||
+ | { | ||
+ | winningNumbers = new ArrayList<> | ||
+ | havingNumbers = new ArrayList<> | ||
+ | |||
+ | this.cardNo = cardNo; | ||
+ | this.anzahl = anzahl; | ||
+ | |||
+ | // FIXME: Befülle die Arraylists winningNumbers und havingNumbers | ||
+ | // indem du den String allNumbers am | splittest, die beiden Teile | ||
+ | // dann an den Leerzeichen aufteilst, in Integers umwandelst und in die | ||
+ | // ArrayLists einfügst. | ||
+ | | ||
+ | | ||
+ | // FIXME Implementiere die Methode calculateWorth, | ||
+ | // eine ganze Zahl zurückliefert und den Wert für die | ||
+ | // Karte hier korrekt setzt. | ||
+ | this.worth = calculateWorth(); | ||
+ | |||
+ | } | ||
+ | | ||
+ | // Das geht ohne die Potenzfunktion, | ||
+ | private int calculateWorth() { | ||
+ | int worth = 0; | ||
+ | //FIXME | ||
+ | | ||
+ | return worth; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | === Hinweise Teil 1 === | ||
+ | |||
+ | Nach dieser Vorbereitung ist Teil 1 trivial: Man iteriert in einer Schleife durch alle Karten und addiert die Kartewerte, die man sich mit einem Getter '' | ||
+ | |||
+ | === Hinweise Teil 2 === | ||
+ | |||
+ | * Für Teil 2 benötigt die Klasse | ||
+ | * Jede Karte wird nur einmal angeschaut, und die Anzahl der Karte wird zum Rätselergebnis addiert. | ||
+ | * Anschließend müssen die Zahlen der Nachfolgenden Zahlen gemäß der Regeln erhöht werden. Dazu bekommt die Klasse '' | ||
+ | * Jetzt muss man nur noch für die nächsten " | ||
+ | |||
+ | <code java> | ||
+ | [...] | ||
+ | |||
+ | // Das erzeugt einen Iterator, der am Index " | ||
+ | Iterator< | ||
+ | // FIXME da fehlt noch was. | ||
+ | |||
+ | [...] | ||
+ | |||
+ | int steps=0; | ||
+ | while(it.hasNext() && steps < gewonneneKarten) { | ||
+ | | ||
+ | // FIXME hier fehlt was | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | [[https:// | ||
</ | </ | ||
+ | |||
+ | === Lösungsvorschlag nach Variante 2 === | ||
+ | |||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
</ | </ |