Von Fröschen und Tischlampen

Aus ProgrammingWiki
Archivierte Version vom 2010-10-11T08:24:43+00:00. Aktuelle Version

Inhaltsverzeichnis

Der Lampen-Stream

Zunächst definieren wir den Stream (abzählbar) unendlich vieler Tischlampen, die alle ausgeschaltet sind.
Jede Lampe ist mit einem Schalter ausgestattet, mit dem die Lampe entsprechend ihres Betriebszustandes entweder ein- oder ausgeschaltet werden kann:

<eval id="4b52203279c19"> (show-stream lamp-stream 18) </eval>

Frosch-Sprünge mit verschiedenen Weiten

Um jede n-te Lampe schalten zu können, erweitern wir die Stream-Sprachelemente mit der Prozedur stream-map-n.
In Analogie zu stream-map bewirkt stream-map-n eine Prozeduranwendung auf jedes n-te Element eines Streams:

Nun können wir Frosch-Sprünge mit aufsteigenden Sprungweiten definieren:

Unendlich viele Frösche springen über unendlich viele Tischlampen

<eval id="4b52259a80ac2"> (show-stream frog-lamp-stream 18) </eval>

Auswertung

Um das Resultat besser verallgemeinern zu können, fassen wir die Nummern der Lampen zusammen, die nach allen Frosch-Sprüngen eingeschaltet sind. In der Vermutung, dass das (abzählbar) unendlich viele Lampen sind, soll dieses Ergebnis wiederum als Stream repräsentiert werden:

<eval id="4b52259a81a5e"> (show-stream (result-stream frog-lamp-stream) 18) </eval>

Ergebnis: Offensichtlich sind nach den Frosch-Sprüngen alle Lampen eingeschaltet, deren Nummern Quadratzahlen sind.

Zurück zu Streams.