BuK/IIm11/Studenten/simawiel/ue4
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Scheme</language>
== Kreativaufgabe ==
Wenn zwei Mengen aufzählbar sind, so ist auch ihre Schnittmenge aufzählbar. Das heißt es muss eine Funktion geben, die eine natürliche Zahl n auf ein Element der Schnittmenge abbildet. Dafür widerum muss es einen Algorithmus geben.
<code id="4f84973ec5a20">
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Aufzählfunktionen für die Mengen m1 und m2 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define m1
(lambda (n)
n
)
)
(define m2
(lambda (n)
(+ n 1)
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Hilfsfunktionen und -variablen ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define match-counter -1)
(define ++
(lambda (c)
(+ c 1)
)
)
(define contains?
(lambda (listx element)
(cond
((null? listx) #f)
((equal? (car listx) element) #t)
(else (contains? (cdr listx) element))
)
)
)
(define get-match
(lambda (list1 list2)
(cond
((empty? list1) null)
((contains? list2 (car list1))
(begin ((car list1)) (++ match-counter)))
(else (get-match (cdr list1) list2))
)
)
)
(define get-m1
(lambda (n)
(if (= n 0)
(list (m1 n))
(append (get-m1 (- n 1)) (list (m1 n)))
)
)
)
(define get-m2
(lambda (n)
(if (= n 0)
(list (m2 n))
(append (get-m2 (- n 1)) (list (m2 n)))
)
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Hauptfunktion: F -> IntersectionElement(M1,M2) ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define intersec
(lambda (n)
(let
((p1 (get-m1 n))
(p2 (get-m2 n))
(last-match (get-match p1 p2))
)
(letrec
((helper
(lambda (list1 list2)
(set! last-match (get-match list1 list2))
)
))
(cond
((and (= n match-counter) (not (null? last-match))) last-match)
((and (= n match-counter) (null? last-match)) null)
(else (helper (cdr p1) (cdr p2)))
)
)
)
)
)
</code>
<run id="4f84973ec5b47">(intersec 10)</run>
== Teilaufgabe 2 - Indirekter Beweis ==
zu zeigen: Nicht jede Teilmenge M2 einer aufzählbaren Menge M1 ist aufzählbar. Wenn M1 eine aufzählbare Menge ist, dann gilt nicht für alle Teilmengen M2⊆M1, dass sie aufzählbar sind.