faecher:informatik:oberstufe:java:aoc:aco2023:day4: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:day4:start [04.12.2023 15:14] – [Bearbeiten - Pane] Frank Schiebelfaecher: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 =====
 + 
 +  * {{ :faecher:informatik:oberstufe:java:aoc:aco2023:day4:aoc2304.png?linkonly |Aufgabe}}
 +  * {{ :faecher:informatik:oberstufe:java:aoc:aco2023:day4:d4.zip |Inputdateien}}: Beispiel d4e.txt, Input d4i.txt. 
 +
 +++++ Kontrollergebnisse |
 +  * Eingabedatei d4e.txt: [Teil 1 - 13] [Teil 2 - 30]
 +  * Eingabedatei d4i.txt: [Teil 1 - 26443] [Teil 2 - 6284877]
 +++++
 +
 +===== Hinweise =====
 + 
 <tabs> <tabs>
   * [[#variante1|Variante 1]]   * [[#variante1|Variante 1]]
Zeile 99: Zeile 113:
 </pane> </pane>
 <pane id="variante2">  <pane id="variante2"> 
-Die grundsätzlichen Tipps aus Variante 1 haben Bestand - allerdings wird zunächst eine ArrayList des Typs gameCards befüllt, die dann mit entsprechenden Methoden alle Infos liefern, die man zur Lösung des Rätsels benötigt. Anstelle des regulären Ausdrucks für mehrere Leerzeichen wird in Variante 2 überprüft, ob ein String leer ist, und gegebenenfalls verworfen.+Die grundsätzlichen Tipps aus Variante 1 haben Bestand - allerdings wird zunächst eine ArrayList des Typs ''gameCards'' befüllt, die dann mit entsprechenden Methoden alle Infos liefern, die man zur Lösung des Rätsels benötigt. Anstelle des regulären Ausdrucks für mehrere Leerzeichen wird in Variante 2 überprüft, ob ein String leer ist, und gegebenenfalls verworfen.
  
 {{ :faecher:informatik:oberstufe:java:aoc:aco2023:day4:cards.png?nolink |}} {{ :faecher:informatik:oberstufe:java:aoc:aco2023:day4:cards.png?nolink |}}
Zeile 178: Zeile 192:
  
 === Hinweise Teil 2 === === Hinweise Teil 2 ===
 +
 +  * Für Teil 2 benötigt die Klasse  ''gameCard'' noch eine Methode, die die Anzahl der "Treffer" zurückliefert. Das ist einfach eine vereinfachte Variante der bereits vorhandenen Methode ''calculateWorth()'', die die Berechung des Wertes auslässt und stattdessen nur die Treffer zählt.
 +  * 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 ''gameCard'' die Methode  ''public void erhoeheAnzahl(int gewonneneExemplare)''.
 +  * Jetzt muss man nur noch für die nächsten "Anzahl-Treffer" Karten deren Anzahl um die Anzahl der eigenen Karte erhöhen. dabei muss man auch aufpassen, dass man am Ende der Kartenliste nicht aus der Liste plumpst - hier bietet sich die Kombination aus einem Iterator und einem Zähler an:
 +
 +<code java>
 +[...]
 +
 +// Das erzeugt einen Iterator, der am Index "Kartennummer-1" losläuft. 
 +Iterator<gameCard> it = cards.listIterator(c.getCardNo()-1);
 +// FIXME da fehlt noch was.
 +
 +[...]
 +
 +int steps=0;
 +while(it.hasNext() && steps < gewonneneKarten) {
 +   gameCard n = it.next();
 +   // FIXME hier fehlt was
 +   steps++;
 +}
 +</code>
 +[[https://info-bw.de/faecher:informatik:oberstufe:bluej:kap04:start|Infos zu Iteratoren auf dieser Wiki-Seite]] 
 </pane> </pane>
 +
 +=== Lösungsvorschlag nach Variante 2 ===
 +
 +
 +  * [[https://codeberg.org/qg-info-unterricht/aoc-bluej-2023/src/commit/05bbf118bbb8b1bc174d04a2b39130aea8e5db93/day4.java|day4.java]]
 +  * [[https://codeberg.org/qg-info-unterricht/aoc-bluej-2023/src/commit/05bbf118bbb8b1bc174d04a2b39130aea8e5db93/gameCard.java|gameCard.java]]
  
 </tabs> </tabs>
  • faecher/informatik/oberstufe/java/aoc/aco2023/day4/start.1701702879.txt.gz
  • Zuletzt geändert: 04.12.2023 15:14
  • von Frank Schiebel