Skip to content

Instantly share code, notes, and snippets.

@dpick
Created November 1, 2012 03:38
Show Gist options
  • Save dpick/3991524 to your computer and use it in GitHub Desktop.
Save dpick/3991524 to your computer and use it in GitHub Desktop.
(define minimize-interval-list
(lambda (ls)
(if (null? ls)
'()
(if (equal? (length ls) 1)
ls
(if (interval-intersects? (car ls) (cadr ls))
(minimize-interval-list (append (interval-union (car ls) (cadr ls)) (cddr ls)))
(cons (car ls) (minimize-interval-list (cdr ls))))))))
(define interval-union
(lambda (i1 i2)
(cond ((interval-intersects? i1 i2) (list (list (min (car i1) (car i2)) (max (car (cdr i1)) (car (cdr i2))))))
(else (list i1 i2)))))
(define interval-contains?
(lambda (interval number)
(cond ((< number (car interval)) #f)
((> number (car (cdr interval))) #f)
(else #t))))
(define interval-intersects?
(lambda (i1 i2)
(cond ((interval-contains? i1 (car i2)) #t)
((interval-contains? i1 (car (cdr i2))) #t)
((interval-contains? i2 (car i1)) #t)
((interval-contains? i2 (car (cdr i1))) #t)
(else #f))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment