Die Evolution des Weltalls in APL

Haben Sie schon mal wissen wollen, wie unser Weltall entstanden ist? Oder interessiert es Sie mehr, wie es sich weiterentwickeln wird?

Diese Fragen werden hier nicht beantwortet. Das sollte Sie nicht enttäuschen; immerhin käme es einer mittleren Sensation gleich, wenn die Fragen, mit denen sich die Menschheit befaßt, seit sie denken kann, und die immer noch offen sind, in dieser Ausgabe der ST Computer gelöst würden.

Sie sehen hier aber ein kleines Programm, das einen Teil-Aspekt der Welten-Problematik beantwortet: nämlich die Frage, ob die Entwicklung eines Systems, die über lange Zeiträume kontinuierlich erscheint, immer weiter fortschreiten muß oder ob sie nicht vielleicht doch mal auf hört.

Mit solchen Hintergedanken im Kopf habe ich mir ein kleines, (sehr, sehr kleines) System ausgedacht, um damit eine Evolution zu simulieren:

Ich konstruiere ein Feld, dessen Größe prinzipiell gleichgültig ist; ich schlage 10 Zeilen und 39 Spalten vor. Dieses Feld hat noch eine Besonderheit: Es hat keine Grenzen! D.h., die oberste zeile schließt an die unterste an und die erste Spalte an die letzte. Wem jetzt Wortschöpfungen wie "Kufel" oder "Würgel" durch den Kopf gehen, liegt nicht verkehrt: Wir haben eine eckige Kugel oder einen runden Würfel vor uns.

Die Geschichte beginnt damit, daß ich in die Mitte des Feldes (aus der Sicht des Betrachters) zwei Punkte oder Einsen setze, die ich in meinem Modell zu sozialen Wesen erkläre. Ich behaupte, daß einerseits (zumindest in einer Welt, wie wir sie kennen) ein Einzelwesen kaum überleben kann, daß aber andererseits die Überlebenschancen bei Überfüllung der Welt sinken.

Um die Sache mathematisch zu vereinfachen und zu präzisieren, stelle ich also für die Weiterentwicklung meiner Punkte folgende Bedingung auf:
In jedem neuen Zeitabschnitt (Generation, Durchlauf) sollen sich nur auf den Feld-Positionen Punkte befinden, die im Zeitabschnitt zuvor genau zwei direkte Nachbarn hatten (in allen Richtungen, also auch diagonal).

...in APL.

Die Umsetzung dieses Modells in APL erfordert ein bißchen Knobelei, ist aber letzten Endes ganz einfach: Die eigentliche Rechnerei nimmt eine ganze Zeile in Anspruch (ich gebe zu: eine lange). Alles andere ist das Drumherum und die Bildschirmanzeige.

Zwei Einschränkungen habe ich zu machen, weil ich das Wesentliche an diesem Programm herausstellen wollte:
- Ich behaupte nicht, daß mein Weg der schnellste ist. - Die Bildschirmanzeige ist nicht graphisch aufgemotzt.
Um die Anzahl der Nachbarschaften für jede einzelne FeldPositionen zu ermitteln, rotiere ich die ganze Matrix um jeweils ein Element nach oben, unten, links und rechts: Das kostet mich in APL schließlich nur ein Lächeln; und weil's so schön war, darf ich gleich noch mal lächeln: Da ja auch die diagonalen Nachbarn berücksichtigt werden sollen, nehme ich jeweils die nach oben und unten verschobene Matrix und rotiere diese auch noch mal nach rechts und links.

Und wozu das Ganze? Ich brauche jetzt nur noch, bildlich gesprochen, diese ganzen rotierenden Matrizen (immerhin acht Stück) aufeinander zu legen und zu schauen, wo genau zwei Einsen übereinander liegen! Oder anders ausgedrückt: Ich vergleiche 2 mit der Summe dieser Matrizen. Das Addieren und Vergleichen von Matrizen ist in APL ja auch kein Problem.

Sie sehen schon: Die Erklärung dieser einen logischen Zeile im Programm nimmt viele Zeilen im Text in Anspruch. Viel einfacher ist es, das Ganze einfach mal auszuprobieren.

APL ist eben kürzer.

Die beiden abgebildeten Funktionen tun übrigens genau das gleiche, die zweite ist nur zur Demonstration auf Kürze getrimmt:

So, nun werden Wetten angenommen: Was wird passieren? Geht die Entwicklung weiter, bis jemand CTRL-C drückt oder den Netzstecker zieht? Sterben die Punkte aus? Wird das Feld wegen Überfüllung geschlossen? Oder gibt es sogar noch eine weitere Möglichkeit?

Ich setze darauf, daß Sie, wenn Sie sich etwa 60 Minuten Zeit nehmen, spätestens beim 1767. Durchlauf überrascht sind!


Wolfgang Thomas



Links

Copyright-Bestimmungen: siehe Über diese Seite
Classic Computer Magazines
[ Join Now | Ring Hub | Random | << Prev | Next >> ]