Sie sind auf Seite 1von 3

Tutorium

Programmierung I

Stephan Gramüller (gramueller@fim.uni-passau.de),


Julian Harrer (harrerj@fim.uni-passau.de)

Aufgabe 23: Goat Life


In dieser Aufgabe wird eine Wiese modelliert auf der eine Ziege lebt. Die Modellierung
der Ziege ist in der Klasse Goat vorgegeben. Sie besteht aus einer Spalten- und Zeilen-
nummer, die die Position der Ziege auf der Wiese angeben und einem boolean, welcher
beschreibt, ob die Ziege lebendig oder tot ist.

Die Wiese wird durch die Klasse Meadow dargestellt und besteht aus einer Instanz der
Klasse Goat und einem int[][] Array namens meadow, welches die Wiese an sich be-
schreibt. Die Werte im Array meadow geben die Höhe des Grases an der entsprechenden
Stelle auf der Wiese an. Teile der Implementierung der Klasse Meadow sind bereits vor-
gegeben.

a) Implementieren Sie die Methode

private int[][] rMeadow(int width, int height)

welche eine zufällige Wiese erzeugt. Erstellen Sie hierzu ein int[][] mit height
int[]) und width Spalten. Initialisieren Sie dann alle Zellen
Zeilen (jede Zeile ist ein
des Arrays mit zufälligen Werten zwischen 1 und 10 (beide Grenzen einschlieÿlich).

Zufällige Integer-Werte können mit der Methode int nextInt(int bound) der
(von Java mitgelieferten) Klasse Random erzeugt werden. Benutzen Sie die in Meadow
bereits vorhandene Instanz rng von Random.

b) Implementieren Sie die Methode

public void nextDay()

welche einen Tag im Leben der Ziege simuliert. Jeder Tag hat den folgenden Ablauf:

1
1) Die Ziege betrachtet die 9 Array-Zellen, deren Zentrum ihr Standort ist (d. h. ihre
eigene Zelle und die 8 Nachbarzellen horizontal, vertikal und diagonal). Sie wählt
die Zelle aus, die den höchsten Wert enthält. Die Ziege betrachtet nur Zellen auf
der Wiese, d. h. am Rand ist darauf zu achten, dass die Grenzen des Arrays nicht
überschritten werden.

2) Falls in der gewählten Zelle kein Wert gröÿer als 0 steht, stirbt die Ziege und die
Methode endet. Andernfalls bewegt sich die Ziege in die gewählte Zelle.

3) Die Ziege frisst 30 Graseinheiten aus der Zelle auf der sie nun steht. Hierbei kann
der Wert der Zelle auch negativ werden.

4) Auf allen anderen Zellen der Wiese wächst das Gras um 0 bis 2 Graseinheiten (zu-
fälliger Wert für jede Zelle).

4 3 3 4 4 4 5 5

6 2 −12 3 7 2 −10 4

−1 6 5 7 −1 7 6 9

1 2 7 0 2 4 −23 1

Die Ziege bewegt sich nach rechts unten und frisst dort 30 Einheiten Gras. Überall sonst
wächst das Gras.

4 2 3 7

3 5 −12 1

−1 −5 5 7

−10 0 7 0

Hier verstirbt die Ziege leider.

2
Aufgabe 24: Sortierte Listen zusammenfügen
Erstelle eine Methode static List<Integer> mergeSortedLists(List<Integer> first,
List<Integer> second), welche zwei sortierte Listen als Parameter nimmt und eine zu-
sammengefügte sortierte Liste zurückgibt. Ist eine der beiden übergebenen Listen leer,
wird die andere zurückgegeben. Bedenke, dass die Listen unterschiedliche Länge haben
können. Beispiel: ([1,3,5,7],[2,4,6,8,9,10]) => [1,2,3,4,5,6,7,8,9,10]

Aufgabe 25: Generisch sortierte Listen zusammenfügen


Erweitere die Methode aus Aufgabe 24 um Generics. Die Listenelemente sollen das In-
terface Comparable implementieren. Schaue auf der Dokumentationseite1 , wie dir die
Methoden des Interfaces bei der Sortierung helfen können.

a) Wie sieht die Methodensignatur aus?

b) Implementiere die Methode.

1
https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/Comparable.html

Das könnte Ihnen auch gefallen