Zum Inhalt
uebung4
Aus ProgrammingWiki
<
BuK
<
IIm11
<
Studenten
<
sirorose
Übung 4, Aufgabe 4 (Teilaufgabe 3)
Illustrieren Sie den Beweis (Aufgabe 4.2) durch ein Scheme-Programm.
(define stream-car car) (define stream-cdr (lambda (stm) (force (cdr stm)))) (define-syntax stream-cons (syntax-rules () ((_ head tail) (cons head (delay tail))))) (define stream-item (lambda (str k) (if (= k 0) (stream-car str) (stream-item (stream-cdr str) (- k 1))))) (define stream->list (lambda (str n) (if (<= n 0) '() (cons (stream-car str) (stream->list (stream-cdr str) (- n 1)))))) (define print-stream (lambda (stm n) (cond ((<= n 0) (display "...\n")) (else (display (stream-car stm)) (display ", ") (print-stream (stream-cdr stm) (- n 1)))))) (define stream-map (lambda (stm proc) (stream-cons (proc (string->number (stream-car stm))) (stream-map (stream-cdr stm) proc)))) (define natstream (lambda (start) (stream-cons (number->string start) (natstream (+ 1 start))))) (define natzahlstream (stream-cons (number->string 0) (natstream 1)))
; Aufzählfunktion f für alle ungerade Zahlen (hier für M) (define f (lambda (n) (number->string (+ 1 (* n 2))))) ; Aufzählfunktion g für alle gerade Zahle (hier für A*/M) (define g (lambda (n) (number->string (* 2 n)))) (define generiere_aufzaehlbare_menge (lambda (f) (stream-map natzahlstream f))) (define menge-bis print-stream) (define M (generiere_aufzaehlbare_menge f)) (define A*-M (generiere_aufzaehlbare_menge g)) (define chi_M (lambda (w) (letrec ((chihelper (lambda (i) (cond ((string=? (f i) w) #t) ((string=? (g i) w) #f) (else (chihelper (+ i 1))))))) (chihelper 0))))
(menge-bis M 10)
ausführen
(menge-bis A*-M 10)
ausführen
(chi_M "9199")
ausführen
Seite
Quelltext
Versionen/Autoren
Konto registrieren
Anmelden
Navigation
Startseite
Letzte Änderungen
Alle Seiten
Einführungskurs
Hilfe
Dateien
Suche
Suchen
Werkzeuge
Links auf diese Seite
Spezialseiten