TuH2 scheme
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Scheme</language>
=== Scheme Programmbeispiele ===
Für die Ausführung der Hauptprogramme sind diverse Hilfsprozeduren nötig.
*zzls - Erstellt eine Zufallszahlenliste
*mv-mergesort - Sortiert eine Liste
*teillisten2 - teilt eine Liste; wird von mv-mergesort und binaersuche benötigt
*verbinden - verbindet zwei Listen; wird von mv-mergesort benötigt
Der Programmcode der Hilfsprozeduren ist am Schluss dieser Wikiseite zu finden.
=== Hilfsprozeduren ===
== zzls ==
<code>
;zzls für ZufallsZahlenListe. Generiert eine Liste mit n paarweise verschiedenen Ganzen Zahlen zwischen a und b.
;Beispielaufruf:
;>(zzls 10 100 1000) ; Zufallszahlenliste mit 1000 Zufallszahlen zwischen 10 und 100
(define zzls
(lambda (a b n)
(if (= n 0)
(list)
(let ((x (random b)))
(if (> x a)
(append (list x)(zzls a b (- n 1)))
(zzls a b n))))))
</code>
<eval>(zzls 1 10 10)</eval>
== mv-mergesort ==
Die Prozedur ist aus "Teilen und Herschen 1" bekannt. Sie sortiert eine gegebene Liste der Größe nach.
<code>
;mv-mergesort
(define mv-mergesort
(lambda (ls)
(if (or (null? ls)(null? (cdr ls)))
ls
(call-with-values
(lambda () (teillisten2 ls))
(lambda (ls1 ls2)
(verbinden
(mv-mergesort ls1)
(mv-mergesort ls2)))))))</code>
<eval>(mv-mergesort '(34 23 1 44 93 24 78 77 17 83))</eval>