[ create a new paste ] login | about

Project: programmingpraxis
Link: http://programmingpraxis.codepad.org/CYb0TmWR    [ raw code | output | fork ]

programmingpraxis - Scheme, pasted on Mar 8:
; sparse sets

(define n 0)
(define d #f)
(define s #f)

(define (make-set u)
  (set! d (make-vector u))
  (set! s (make-vector u)))

(define (clear) (set! n 0))

(define (insert k)
  (vector-set! d n k)
  (vector-set! s k n)
  (set! n (+ n 1)))

(define (member? k)
  (and (< (vector-ref s k) n)
       (= (vector-ref d (vector-ref s k)) k)))

(define (for-all proc)
  (do ((i 0 (+ i 1))) ((= i n))
    (proc (vector-ref d i))))

(make-set 8)
(clear)
(insert 5)
(insert 1)
(insert 4)
(display (member? 0)) (newline)
(display (member? 1)) (newline)
(display (member? 2)) (newline)
(display (member? 3)) (newline)
(display (member? 4)) (newline)
(display (member? 5)) (newline)
(display (member? 6)) (newline)
(display (member? 7)) (newline)
(display d) (newline)
(display s) (newline)


Output:
1
2
3
4
5
6
7
8
9
10
#f
#t
#f
#f
#t
#t
#f
#f
#(5 1 4 0 0 0 0 0)
#(0 1 0 0 2 0 0 0)


Create a new paste based on this one


Comments: