Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (load "huffman.scm")
- ;; 2e)
- ;; hjelpeprosedyre
- (define (member? item list)
- (if (leaf? list)
- (eq? item (cadr list))
- (if (eq? (member item (caddr list)) #f)
- #f
- #t)))
- (define (encode items tree)
- (define (recur items current-branch bits)
- (if (null? items)
- bits
- (if (leaf? current-branch)
- (if (equal? (symbol-leaf current-branch) (car items))
- (recur (cdr items) tree bits)
- '())
- (if (member? (car items) (left-branch current-branch))
- (recur items (left-branch current-branch) (append bits '(0)))
- (recur items (right-branch current-branch) (append bits '(1)))))))
- (recur items tree '()))
- (encode '(ninjas fight ninjas by night) sample-tree)
- (decode (encode '(ninjas fight ninjas by night) sample-tree) sample-tree)
- ;;2f
- (define (grow-huffman-tree freqs)
- (define (recur leaf-set)
- (if (null? (cdr leaf-set))
- (car leaf-set)
- (recur (adjoin-set (make-code-tree (car leaf-set) (cadr leaf-set))(cddr leaf-set)))))
- (recur (make-leaf-set freqs)))
- (define freqs '((a 2) (b 2) (c 1) (d 3) (e 1) (f 3)))
- (define codebook (grow-huffman-tree freqs))
- (decode (encode '(a b c) codebook) codebook)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement