Schülerlösungen 2023 Jahrgangsstufe 11
Aus ProgrammingWiki
Voraussetzungen
Für das Projekt sind bereits die bekannten Stream-Sprachelemente definiert:
Syntax | Semantik | |
Selektoren | stream-car | gibt das Kopfglied zurück |
stream-cdr | gibt den Reststream zurück | |
Konstruktor | stream-cons | erzeugt aus Kopfglied und Reststream einen Stream |
Prädikat | stream? | gibt #t zurück, wenn das Argument ein Stream ist, anderenfalls #f |
Operatoren | stream-map | wendet eine Prozedur auf die Glieder eines Streams an und gibt das Resultat als Stream zurück |
stream-filter | filtert mit einem Prädikat Glieder eines Streams heraus und gibt diese in einem Stream zurück | |
Ausgabe | show-stream | gibt die Elemente eines Streams in einer beliebigen Anzahl auf dem Bildschirm aus |
Weiterhin steht bereit:
Syntax-Erweiterungen
Es ist sinnvoll, die Glieder einer Zahlenfolge sinnvoll zu runden. Deshalb soll die Stream-Ausgabe um die schon bekannte Prozedur runden erweitert werden:
Um mehrere Balkendiagramme grafisch darstellen zu können, ist weiterhin die nachfolgende geringfügige Syntax-Erweiterung der Prozedur balkendiagramm notwendig:
(balkendiagramm <stm> <anz> <nr>) ; <stm> ... Stream mit Zahlenwerten ; <anz> ... Anzahl der darzustellenden Elemente ; <nr> ... fortlaufende Nummerierung des Balkendiagramms
Beispiel:
Gegeben ist die Zahlenfolge $(e_n)$ mit der nachfolgenden expliziten Bildungsvorschrift:
$e_n=(1+\frac{1}{n})^n\hspace{0.3em},\hspace{0.3em}\mbox{für}\hspace{0.3em}n=1, 2, 3, ...$
Explizite Bildungsvorschrift:
Die Collatz-Folge
Autor: Mathias Heyder Avalos (2023)
Lothar Collatz (* 6. Juli 1910; † 26. September 1990) veröffentlichte die Zahlenfolge im Jahr 1937.
Definition:
$a_1 \longrightarrow a_{n+1}=\begin{cases}\dfrac{a_n}{2},\mbox{wenn}\hspace{0.3em}a_n\hspace{0.3em}\mbox{gerade}\\\\3 \cdot a_n + 1,\mbox{sonst}\end{cases}$
Implementation:
Collatz-Problem:
Die Folge tritt somit in einen Zyklus ein, in dem die Glieder $4$, $2$, $1$ ab einem bestimmten Folgenglied ständig wiederholt werden.
Mit den folgenden Prozeduren wird geprüft, ob diese Periode eintritt und ggf. gezählt, ab welchem Folgenglied das erfolgt.
Bis heute ist nicht geklärt, ob diese Periode bei jedem beliebigen Startglied $a_1$ eintritt.