Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

43
Task/Set/Scheme/set.ss Normal file
View file

@ -0,0 +1,43 @@
(define (element? a lst)
(and (not (null? lst))
(or (eq? a (car lst))
(element? a (cdr lst)))))
; util, not strictly needed
(define (uniq lst)
(if (null? lst) lst
(let ((a (car lst)) (b (cdr lst)))
(if (element? a b)
(uniq b)
(cons a (uniq b))))))
(define (intersection a b)
(cond ((null? a) '())
((null? b) '())
(else
(append (intersection (cdr a) b)
(if (element? (car a) b)
(list (car a))
'())))))
(define (union a b)
(if (null? a) b
(union (cdr a)
(if (element? (car a) b)
b
(cons (car a) b)))))
(define (diff a b) ; a - b
(if (null? a) '()
(if (element? (car a) b)
(diff (cdr a) b)
(cons (car a) (diff (cdr a) b)))))
(define (subset? a b) ; A ⊆ B
(if (null? a) #t
(and (element? (car a) b)
(subset? (cdr a) b))))
(define (set-eq? a b)
(and (subset? a b)
(subset? b a)))