summaryrefslogtreecommitdiff
path: root/coding-exercises/2/62.rkt
blob: a1be49e2ffd475db51abc7debdf2fb833d306931 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#lang racket

;; In each branch of the problem we either terminate the process or we reduce the problem to a subproblem with set - (car set)
;; O(n)
;; need to iterate like this to prevent duplicates?
(define (union-set set1 set2)
  (cond ((and (null? set1) (null? set2)) '())
        ((null? set1) (cons (car set2) (union-set set1 (cdr set2))))
        ((null? set2) (cons (car set1) (union-set (cdr set1) set2)))
        ((= (car set1) (car set2)) (cons (car set2) (union-set (cdr set1) (cdr set2))))
        ((> (car set1) (car set2)) (cons (car set2) (union-set set1 (cdr set2))))
        ((< (car set1) (car set2)) (cons (car set1) (union-set (cdr set1) set2)))))

(define test-list (list 1 2))
(define test-list2 (list 4 5 6 7))
(union-set test-list test-list2)