Výhodné je použiť funkciu, ktorá zisťuje, či sa prvok nachádza v zozname. V hlavnej funkcií budeme pre všetky prvky prvej množiny zisťovať či sú aj prvkami druhej množiny.


; T ak sa sv nachádza v zozname na najvyššej úrovni.
(defun isin (sv zoz)
 (cond ((null zoz) NIL)
       ((equal sv (first zoz)) T)
       (T (isin sv (rest zoz)))
 )
)

; Test či zoz1 je podmnožinou zoz2.
; Platí, že prázdna množina je podmnožinou ľubovoľnej inej množiny.
; Hlavná funkcia

(defun podmnoz (zoz1 zoz2)
 (cond ((null zoz1) T)
       ((isin (first zoz1) zoz2) (podmnoz (rest zoz1) zoz2))
       (T NIL)
 )
)

; Príklady:
(podmnoz '(1 2) '(a b 2 c 1)) -> T
(podmnoz '(1 2) '(a b 1 c))   -> NIL

 


Autori[ ZADANIE | AKO ZAČAŤ | RIEŠENIE ]
Posledná aktualizácia 4. 9. 2001
back  home  next