Chaos-Spiel − der springende Punkt
Das Chaos-Spiel geht wie folgt:
Seien $A$, $B$, $C$ die Ecken eines gleichseitigen Dreiecks auf der Tafel.
Wähle zufällig einen weiteren Punkt $P$. Wir lassen diesen Punkt „springen“, indem wir die folgenden Anweisungen unendlich oft wiederholen:
- Wähle zufällig einen der Eckpunkte $A$, $B$, $C$, etwa mit Hilfe eines Würfels:
- $A$ falls der Würfel 1 oder 2 zeigt;
- $B$ falls er 3 oder 4 zeigt;
- $C$ falls er 5 oder 6 zeigt.
- Der „neue“ Punkt $P$ sei der Mittelpunkt zwischen dem „alten“ Punkt $P$ und dem erwürfelten Eckpunkt.
- Markiere diesen neuen Punkt $P$.
Kannst Du erraten, welche geometrische Figur herauskommt?
Eine solche Folge von Handlungsanweisungen nennt man einen Algorithmus. Jedes Kochrezept oder jede Bastelanleitung oder jede Spielanleitung ist ein Beispiel für einen Algorithmus.
Das folgende Python-Programm ist eine Implementierung des Chaos-Spiel-Algorithmus - wir sagen dem Computer also mit Hilfe der Programmiersprache Python in präziser, computerverständlicher Form, was er tun soll.
Ob es heutzutage bereits KI-Systeme (KI = Künstliche Intelligeny) gibt, die sprachliche Anweisungen wie oben direkt „verstehen“ und ausführen können, ist mir nicht bekannt.
Lies das Python-Programm (auf dem eigenen Rechner) und versuche, es zu verstehen!
Wer noch kein Python kann, wird beim ersten Lesen nichts oder nur wenig verstehen - der Sinn ist aber, dass ihr ähnlich wie beim äusserst effektiven frühkindlichen Erlernen der Muttersprache nun einer neuen Programmiersprache in einer nicht-trivialen Situation ausgesetzt werdet und durch Nachfragen und Erklärungen meinerseits mit der Zeit ein gewisses Verständnis entwickelt.
Python-Programm zum Chaos-Spiel
# Sierpinski-Dreieck per Chaos-Spiel from gpanel import * from random import * breite = 10000 hoehe = 8660 makeGPanel("Sierpinski triangle chaos game", 0, breite, 0, hoehe) # Koordinaten des Punkts A xA = 0 yA = 0 # Koordinaten des Punkts B xB = breite yB = 0 # Koordinaten des Punkts C xC = int(breite / 2) yC = hoehe # Zum Ändern der Dicke des Stifts bzw. für "dickere" Pixel: # lineWidth(2) line (xA, yA, xB, yB) line (xB, yB, xC, yC) line (xC, yC, xA, yA) # zufaellige Startkoordinaten des springenden Punktes x = randint(0, breite) y = randint(0, hoehe) point(int(x), int(y)) iterationen = 1000000 for i in range(0, iterationen): zufall = randint(1, 3) if zufall == 1: x = (x + xA) / 2 y = (y + yA) / 2 if zufall == 2: x = (x + xB) / 2 y = (y + yB) / 2 if zufall == 3: x = (x + xC) / 2 y = (y + yC) / 2 point(int(x), int(y)) print(iterationen, "Iterationen durchgeführt.")
Derselbe Python-Code sehr ausführlich kommentiert
Bringe Tigerjython auf deinem Rechner zum Laufen.
Richte das Browser-Fenster links ein und das Tigerjython-Fenster rechts, so dass sie jeweils die halbe Bildschirmbreite einnehmen - dies ermöglicht effektives Arbeiten.
Kopiere das obige Programm in das Tigerjython-Fenster! (Sind Ctrl-c, Ctrl-v zum Kopieren und Alt+Tab zum Fensterwechsel bekannt? Kann zum Kopieren auch den Clipboard-Icon rechts oben in der Code-Box nutzen.)
Bringe es mit dem Button (= Knopf) mit dem grünen Dreieck in der Menüleiste zum Laufen:
Lerne Tigerjython kennen: Schau alle Menüpunkte an, lass den Mauszeiger über den Buttons schweben (= let the mouse hover over the buttons).
Wer selbst etwas experimentieren und das Programm verändern möchte, findet Anregungen auf Wikipedia - Chaos game. Dort ist auch ein Link auf das Sierpiński-Dreieck - so heisst die Figur, die unser Chaos-Spiel produziert hat.
Wer mag, darf natürlich auch gerne die Einführung Tigerjython anschauen. Dort ist auch erklärt, wie man Tigerjython auf dem eigenen Rechner installiert. Wer kann es auf dem iPad installieren?