Advertisement
Guest User

Untitled

a guest
Mar 9th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 1.28 KB | None | 0 0
  1. (load "huffman.scm")
  2.  
  3. ;; 2e)
  4.  
  5.  
  6. ;; hjelpeprosedyre
  7. (define (member? item list)
  8.   (if (leaf? list)
  9.       (eq? item (cadr list))
  10.       (if (eq? (member item (caddr list)) #f)
  11.       #f
  12.       #t)))
  13.  
  14.  
  15. (define  (encode items tree)
  16.   (define (recur items current-branch bits)
  17.     (if (null? items)
  18.         bits
  19.         (if (leaf? current-branch)
  20.                (if (equal? (symbol-leaf current-branch) (car items))
  21.                    (recur (cdr items) tree bits)
  22.                    '())
  23.                 (if (member? (car items) (left-branch current-branch))
  24.                     (recur items (left-branch current-branch) (append bits '(0)))
  25.                     (recur items (right-branch current-branch) (append bits '(1)))))))
  26.   (recur items tree '()))
  27.  
  28.  
  29.  
  30. (encode '(ninjas fight ninjas by night) sample-tree)
  31. (decode (encode '(ninjas fight ninjas by night) sample-tree) sample-tree)
  32.  
  33. ;;2f
  34.  
  35.  
  36. (define (grow-huffman-tree freqs)
  37.   (define (recur leaf-set)
  38.     (if (null? (cdr leaf-set))
  39.         (car leaf-set)
  40.         (recur (adjoin-set (make-code-tree (car leaf-set) (cadr leaf-set))(cddr leaf-set)))))
  41.   (recur (make-leaf-set freqs)))
  42.  
  43. (define freqs '((a 2) (b 2) (c 1) (d 3) (e 1) (f 3)))
  44. (define codebook (grow-huffman-tree freqs))
  45. (decode (encode '(a b c) codebook) codebook)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement