faecher:informatik:oberstufe:java:aoc:aco2023:day2: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:day2:start [02.12.2023 18:35] – [Bearbeiten - Pane] Frank Schiebelfaecher:informatik:oberstufe:java:aoc:aco2023:day2:start [12.11.2024 06:32] (aktuell) Frank Schiebel
Zeile 1: Zeile 1:
 +~~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>
Zeile 6: Zeile 25:
  
 <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", "..."]
Zeile 69: Zeile 88:
  
 ==== Hilfestellungen Teil 2 ==== ==== Hilfestellungen Teil 2 ====
-  * Das meiste der verschachtelten Schleifen kannst du stehen lassen. Du benötigst nun nicht mehr die boolean-Variable, um zu überprüfen, ob die aktuelle Zeile 'erlaubt' ist. Jede Zeile fliest gleichermaßen in das Ergebnis ein.+  * Das meiste der verschachtelten Schleifen kannst du stehen lassen. Du benötigst nun nicht mehr die boolean-Variable, um zu überprüfen, ob die aktuelle Zeile 'erlaubt' ist. Jede Zeile fließt gleichermaßen in das Ergebnis ein.
   * Erstelle pro Zeile drei int-Variablen, die dir das größte Vorkommen von rot, grün und blau Speichern. Für jede Farbe überprüfst du, ob die Zahl der jeweiligen Farbe größer ist als der bisher gespeicherte Wert in den neuen Variablen.   * Erstelle pro Zeile drei int-Variablen, die dir das größte Vorkommen von rot, grün und blau Speichern. Für jede Farbe überprüfst du, ob die Zahl der jeweiligen Farbe größer ist als der bisher gespeicherte Wert in den neuen Variablen.
   * Am Ende jeder Zeile fügst du das Produkt der drei Variablen zur Gesamtsumme hinzu.   * Am Ende jeder Zeile fügst du das Produkt der drei Variablen zur Gesamtsumme hinzu.
Zeile 118: Zeile 137:
 {{ :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 Objekorientierung 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.
Zeile 202: Zeile 221:
     }     }
 </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>
  • faecher/informatik/oberstufe/java/aoc/aco2023/day2/start.1701542105.txt.gz
  • Zuletzt geändert: 02.12.2023 18:35
  • von Frank Schiebel