September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
30
Task/Symmetric-difference/Scheme/symmetric-difference-1.ss
Normal file
30
Task/Symmetric-difference/Scheme/symmetric-difference-1.ss
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
(import (scheme base)
|
||||
(scheme write))
|
||||
|
||||
;; -- given two sets represented as lists, return (A \ B)
|
||||
(define (a-without-b a b)
|
||||
(cond ((null? a)
|
||||
'())
|
||||
((member (car a) (cdr a)) ; drop head of a if it's a duplicate
|
||||
(a-without-b (cdr a) b))
|
||||
((member (car a) b) ; head of a is in b so drop it
|
||||
(a-without-b (cdr a) b))
|
||||
(else ; head of a not in b, so keep it
|
||||
(cons (car a) (a-without-b (cdr a) b)))))
|
||||
|
||||
;; -- given two sets represented as lists, return symmetric difference
|
||||
(define (symmetric-difference a b)
|
||||
(append (a-without-b a b)
|
||||
(a-without-b b a)))
|
||||
|
||||
;; -- test case
|
||||
(define A '(John Bob Mary Serena))
|
||||
(define B '(Jim Mary John Bob))
|
||||
|
||||
(display "A\\B: ") (display (a-without-b A B)) (newline)
|
||||
(display "B\\A: ") (display (a-without-b B A)) (newline)
|
||||
(display "Symmetric difference: ") (display (symmetric-difference A B)) (newline)
|
||||
;; -- extra test as we are using lists
|
||||
(display "Symmetric difference 2: ")
|
||||
(display (symmetric-difference '(John Serena Bob Mary Serena)
|
||||
'(Jim Mary John Jim Bob))) (newline)
|
||||
25
Task/Symmetric-difference/Scheme/symmetric-difference-2.ss
Normal file
25
Task/Symmetric-difference/Scheme/symmetric-difference-2.ss
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
(import (scheme base)
|
||||
(scheme write)
|
||||
(srfi 1))
|
||||
|
||||
(define (a-without-b a b)
|
||||
(lset-difference equal?
|
||||
(delete-duplicates a)
|
||||
(delete-duplicates b)))
|
||||
|
||||
(define (symmetric-difference a b)
|
||||
(lset-xor equal?
|
||||
(delete-duplicates a)
|
||||
(delete-duplicates b)))
|
||||
|
||||
;; -- test case
|
||||
(define A '(John Bob Mary Serena))
|
||||
(define B '(Jim Mary John Bob))
|
||||
|
||||
(display "A\\B: ") (display (a-without-b A B)) (newline)
|
||||
(display "B\\A: ") (display (a-without-b B A)) (newline)
|
||||
(display "Symmetric difference: ") (display (symmetric-difference A B)) (newline)
|
||||
;; -- extra test as we are using lists
|
||||
(display "Symmetric difference 2: ")
|
||||
(display (symmetric-difference '(John Serena Bob Mary Serena)
|
||||
'(Jim Mary John Jim Bob))) (newline)
|
||||
Loading…
Add table
Add a link
Reference in a new issue