Universität Ulm, Fakultät für Mathematik und Wirtschaftswissenschaften, SAI

5. Uebungsblatt (17.11.98 - 01.12.98)


Aufgabe 7 (20 Punkte)

Der Planet Wa-Tor hat die Form eines Torus und ist vollständig mit Wasser bedeckt. Im Wasser von Wa-Tor leben zwei Tierarten: Haie und Fische. Die Haie ernähren sich von Fischen. Die Nahrung der Fische ist unbekannt, aber offenbar immer reichlich vorhanden. Der Planet Wa-Tor ist in quadratische Sektoren eingeteilt, die zusammengefaßt als Rechteck dargestellt werden können. In jedem Sektor befindet sich entweder ein Hai, ein Fisch oder er ist unbesetzt.
Nachbarfelder sind Felder, die vertikal oder horizontal aneinandergrenzen (also nicht diagonal). Wa-Tor ist ein riesiger WAsser-TORus, d.h. er hat die Form eines gigantischen Ringes. Rollt man den Ring auf, so erhält man ein Rechteck. Es gelten dann zyklische Randbedingungen: geht man von der obersten Zeile einen Schritt nach oben so landet man in der untersten Zeile, analoges gilt bei den Spalten.

Jede Zeiteinheit besteht aus zwei Phasen:

Fische schwimmen und vermehren sich
Jeder Fisch wählt sich (per Zufall) eines der freien Nachbarfelder aus und zieht dorthin. Erreicht der Fisch ein bestimmtes Alter (fbrut), so entsteht an der alten Position ein neuer Fisch. Beide Fische haben dann das Alter 0. Gibt es kein freies Nachbarfeld, so findet auch keine Vermehrung statt.

Haie jagen und vermehren sich
Jeder Hai sucht aus den Nachbarfeldern, auf denen Fische sind per Zufall eines aus und zieht dorthin, wobei der Fisch aufgefressen wird. Ansonsten wählt er per Zufall ein freies Nachbarfeld aus. Wenn ein Hai fasten Zeiteinheiten lang keinen Fisch gefressen hat, stirbt er. Bei Erreichen des Alters hbrut entsteht an der alten Position ein neuer Hai.

Schreiben Sie ein C-Programm zur Simulation des Ökosystems auf dem Planeten Wa-Tor. Der Anfangszustand sollte per Zufall bestimmt werden, gesteuert durch Parameter vom Benutzer. Lesen Sie dazu die Feldgröße, die Startzahl der Haie und Fische sowie die weiteren Parameter hbrut, fbrut und fasten von der Standardeingabe. Danach soll das Programm erst die Züge der Fische, dann die der Haie berechnen und schließlich die Daten des neuen Zustandes nach Standardausgabe schreiben. Wenn das Feld klein genug ist stellen Sie den Zustand als Karte dar (in Form eines Rechtecks): "O" für Haie, "." für Fische und " " für freie Felder). Der Benutzer sollte die Möglichkeit haben, die Ausführung nach jeder Zeiteinheit abzubrechen.

Zu Wa-Tor gibt es einen ausführlichen Artikel in einem Sonderheft des Spektrum der Wissenschaft: Computer-Kurzweil.

Vernünftige Parameter sind für ein Feld mit 32 * 14 Sektoren: 200 Fische und 20 Haie zu Beginn, fbrut = 3, hbrut = 10, fasten = 3.

Die benötigten Matrizen dürfen Sie fest dimensionieren. Legen Sie aber die Größe über Konstanten fest. Verwenden Sie dafür die #define-Anweisung des C-Preprozessors.
Zur Erzeugung von Zufallszahlen gibt es Funktionen der C-Bibliothek: man rand.

Viel Spaß beim Experimentieren!

Universität Fakultät SAI


Martina Maier, 10. November 1998