home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 2: PC / frozenfish_august_1995.bin / bbs / d09xx / d0963.lha / SIOD / scm / hash.scm < prev    next >
Text File  |  1993-05-11  |  1KB  |  33 lines

  1. (define vec (make-vector 100 nil))
  2. (define size 100)
  3.  
  4. (define (collision x y s)
  5.         (let* ((y (remainder y size))
  6.               (el (vector-ref vec y)))
  7.              (cond ((null? el) (vector-set! vec y x))
  8.                    ((eqv? el x) el)        
  9.                    ((= y s) 'table-full)
  10.                    (else (collision x (1+ y) s)))))
  11.  
  12. (define (hash x)
  13.         (let* ((y (remainder (+ (* x 67891) 8763) size))
  14.                (el (vector-ref vec y)))
  15.              (cond ((null? el) (vector-set! vec y x))
  16.                    ((eqv? el x) el)                   
  17.                    (else (collision x (1+ y) y)))))
  18.  
  19. (define (unhash x)
  20.         (let* ((y (remainder (+ (* x 67891) 8763) size))
  21.                (el (vector-ref vec y)))
  22.              (cond ((null? el) nil)
  23.                    ((eqv? el x) el)
  24.                    (else (un-collision x (1+ y) y)))))
  25.  
  26. (define (un-collision x y s)
  27.         (let* ((y (remainder y size))
  28.                (el (vector-ref vec y)))
  29.              (cond ((null? el) nil) 
  30.                    ((eqv? el x) el)
  31.                    ((= y s) nil)
  32.                    (else (un-collision x (1+ y) s)))))
  33.