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:aoc2021:day6:start [06.12.2021 14:36] – [Aufgabenteil 1] sbel | faecher:informatik:oberstufe:java:aoc:aoc2021:day6:start [06.12.2021 15:30] (aktuell) – [Aufgabenteil 2] sbel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Tag 6: Laternenfische, | ====== Tag 6: Laternenfische, | ||
- | ====== Aufgabenteil 1 ====== | + | ===== Aufgabenteil 1 ===== |
Für den Teil 1 kann man es mit einer Modellierung wie der folgenden versuchen: | Für den Teil 1 kann man es mit einer Modellierung wie der folgenden versuchen: | ||
Zeile 44: | Zeile 44: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | ++++ | ||
+ | |||
+ | ===== Aufgabenteil 2 ===== | ||
+ | |||
+ | Wenn man die neuen Fische einzeln in die Liste der Fische einfügt, wir diese sehr schnell sehr lang. Bei genauerem nachdenken fällt auf, dass das auch gar nicht nötig ist, denn bei allen in einem Zeitschritt angefügten Fische gehen die inneren Uhren synchron - sie beginnen alle bei 8 und werden dann runtergezählt. Man kann das ganze also anstatt mit einzelnen Fischen mit Fischgruppen modellieren: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | * Die '' | ||
+ | * Die Zeitschritt-Methode ('' | ||
+ | * Wenn man alle Gruppen in einem Zeitschritt durchläuft, | ||
+ | * Außerdem wird man feststellen, | ||
+ | |||
+ | |||
+ | ++++ Codegerüst für diesen Ansatz | | ||
+ | |||
+ | Wieder müssen alle verwendeten Klassen und Methoden passend erdacht werden, auch die '' | ||
+ | |||
+ | <code java> | ||
+ | public long partOne(int daysToSimulate) { | ||
+ | parseInputToFishGroupList(); | ||
+ | | ||
+ | long numFish = fishGroupList.size(); | ||
+ | |||
+ | for(int day=0; | ||
+ | int dayNum=day+1; | ||
+ | System.out.print(" | ||
+ | | ||
+ | long newBabyFish = 0; | ||
+ | Iterator< | ||
+ | while(fishIterator.hasNext()) { | ||
+ | lanternFishGroup f = fishIterator.next(); | ||
+ | newBabyFish = newBabyFish + f.makeTimeStep(); | ||
+ | } | ||
+ | | ||
+ | // neue Fischgruppe mit Timer 8 erzeugen | ||
+ | lanternFishGroup n = new lanternFishGroup(8, | ||
+ | fishGroupList.add(n); | ||
+ | | ||
+ | // | ||
+ | numFish = numFish + newBabyFish; | ||
+ | System.out.println(" | ||
+ | |||
+ | | ||
+ | } | ||
+ | return numFish; | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | ++++ |