faecher:informatik:oberstufe:java:aoc:aoc2021:day6: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:aoc2021:day6:start [06.12.2021 14:41] – [Aufgabenteil 1] sbelfaecher:informatik:oberstufe:java:aoc:aoc2021:day6:start [06.12.2021 15:30] (aktuell) – [Aufgabenteil 2] sbel
Zeile 52: Zeile 52:
  
 {{ :faecher:informatik:oberstufe:java:aoc:aoc2021:day6:fishgroup.png |}} {{ :faecher:informatik:oberstufe:java:aoc:aoc2021:day6:fishgroup.png |}}
 +
 +
 +  * Die ''lanternFishGroup'' hat ein weiteres Attribut ''numFish'', das angibt, wie groß die Gruppe ist.
 +  * Die Zeitschritt-Methode (''makeTimeStep()'') der ''lanternFishGroup'' gibt einen ganzzahligen Wert zurück, wieviele Fische im Fall, dass der Gruppentimer auf 0 steht neu erzeugt werden.
 +  * Wenn man alle Gruppen in einem Zeitschritt durchläuft, kann man ermitteln, wieviele neue Fische in diesem Zeitschritt erzeugt werden. Das kann man sich in der Gesamtsumme der Fische merken - und außerdem eine neue Gruppe der entsprechenden Größe anfügen. In ''day6'' gibt es nun also eine ArrayList für die Fischgruppen: ''ArrayList<lanternFishGroup> fishGroupList = new ArrayList<>();'''
 +  * Außerdem wird man feststellen, dass beim realen Input ''int'' nicht ausreicht, da der Wertebereich hier überläuft.
 +
 +
 +++++ Codegerüst für diesen Ansatz |
 +
 +Wieder müssen alle verwendeten Klassen und Methoden passend erdacht werden, auch die ''parseInputToFishGroupList'' Methode muss angepasst werden.
 +
 +<code java>
 +public long partOne(int daysToSimulate) {
 +        parseInputToFishGroupList();
 +        
 +        long numFish = fishGroupList.size();
 +
 +        for(int day=0;day<daysToSimulate; day++) {
 +            int dayNum=day+1;
 +            System.out.print("Day " + dayNum + ":");
 +            
 +            long newBabyFish = 0;
 +            Iterator<lanternFishGroup> fishIterator = fishGroupList.iterator();
 +            while(fishIterator.hasNext()) {
 +                lanternFishGroup f = fishIterator.next();
 +                newBabyFish = newBabyFish + f.makeTimeStep();
 +            }
 +            
 +            // neue Fischgruppe mit Timer 8 erzeugen
 +            lanternFishGroup n = new lanternFishGroup(8,newBabyFish);
 +            fishGroupList.add(n);
 +            
 +            //System.out.print(fishList);
 +            numFish = numFish + newBabyFish;
 +            System.out.println(" There are " + numFish + " fish in the sea");
 +
 +            
 +        }
 +        return numFish;
 +
 +    }
 +</code>
 +++++
  • faecher/informatik/oberstufe/java/aoc/aoc2021/day6/start.1638801665.txt.gz
  • Zuletzt geändert: 06.12.2021 14:41
  • von sbel