mengenoperationen

iceman1888

Neuling
Thread Starter
Mitglied seit
06.09.2009
Beiträge
66
Ort
Kiel
hi leute
ich soll folgende operationen für mengen in scheme (Lisp) implementieren:
1. (vereinigung a b)
2. (teilmenge? a b)
3. (entfernen x a)
4. (differenz a b)

für die vereinigung hab ich folgendes:
Code:
(define (vereinigung a b)
(cond ((empty? a) b)
((empty? b) a) 
((element? (first a) b)
(cons (first a) (vereinigung (rest a) b)))
(else (vereinigung (rest a) b))))


(define leer empty)

(define (element? x m)
(cond ((empty? m) false)
((equal? x (first m)) true)
(else (element? x (rest m)))))

bin mir aber nicht sicher..

bei 2. :
Code:
(define (teilmenge? a b)
  (cond ((empty? a) false)
        ((empty? b) false)
        (else (element? a b))))


(define (element? x m)
(cond ((empty? m) false)
((equal? x (first m)) true)
(else (element? x (rest m)))))

aber bei den anderen beiden fällt mir nicht so recht was ein... und ich weiß auch net ob meine beiden ersten sachen richtig sind...
hat jemand eine idee??

greetz iceman

---------- Beitrag hinzugefügt um 15:48 ---------- Vorheriger Beitrag war um 15:35 ----------

oder könnte das für die teilmenge auch so aussehen???

Code:
(define (teilmenge? a b)
  (if (empty? a)
    true
    (and (element? (first a) b) (teilmenge? (rest a) b) )))



(define (element? x m)
(cond ((empty? m) false)
((equal? x (first m)) true)
(else (element? x (rest m)))))


---------- Beitrag hinzugefügt um 15:58 ---------- Vorheriger Beitrag war um 15:35 ----------

so hab mal ein vorschlag für entfernen:

Code:
(define (entfernen x a)
    (cond ((empty? a) a)
    ((equal? x (car a)) (entfernen x (cdr a)))
    (else (cons (car a) (entfernen x (cdr a))))))

stimmt das so??
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh