Skip to content

Instantly share code, notes, and snippets.

@duncanmak
Created April 9, 2012 20:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save duncanmak/2346450 to your computer and use it in GitHub Desktop.
Save duncanmak/2346450 to your computer and use it in GitHub Desktop.
(define (make-object name) (list 'name name))
(define object->name cadr)
(define names (list "john" "paul" "george" "ringo"))
(define objects (map make-object names))
(define (contains? objects names)
(define (names-contains? name)
(let loop ((names names))
(cond
((null? names) #f)
((string=? name (car names)) #t)
(else (loop (cdr names))))))
(let loop ((object-names (map object->name objects)))
(cond
((null? object-names)
#t)
((not (names-contains? (car object-names)))
#f)
(else (loop (cdr object-names))))))
(define (p message result)
(display message)
(display result)
(newline))
(p "This test passed: " (contains? objects names))
(p "This test passed: " (not (contains? (cons (make-object "duncan") objects) names)))
@simonhaines
Copy link

This is O(n^2)
Sort for O(n log n)
Hash for O(2n)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment