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>