Code Review
Compare your solutions
#| BEGIN (Введите свое решение) |#
(define (element-of-set? x set)
(cond ((null? set) #f)
((equal? x (car set)) #t)
(else (element-of-set? x (cdr set)))))
(define (left-branch tree) (car tree))
(define (right-branch tree) (cadr tree))
(define (choose-branch symbol tree)
(cond [(element-of-set? symbol (symbols (left-branch tree))) (left-branch tree)]
[(element-of-set? symbol (symbols (right-branch tree))) (right-branch tree)]
[else (error "такого символа не существует" symbol)]))
(define (choose-bit symbol tree)
(cond [(element-of-set? symbol (symbols (left-branch tree))) (list 0)]
[(element-of-set? symbol (symbols (right-branch tree))) (list 1)]
[else (error "такого символа не существует" symbol)]))
(define (encode-symbol symbol tree)
(let ((next-branch (choose-branch symbol tree))
(bit (choose-bit symbol tree)))
(if (leaf? next-branch)
bit
(append bit (encode-symbol symbol next-branch)))))
#| END |#
#| BEGIN (Введите свое решение) |#
(define (left-branch tree) (car tree))
(define (right-branch tree) (cadr tree))
(define (choose-branch symbol tree)
(cond [(memq symbol (symbols (left-branch tree))) (left-branch tree)]
[(memq symbol (symbols (right-branch tree))) (right-branch tree)]
[else (error "такого символа не существует" symbol)]))
(define (choose-bit symbol tree)
(cond [(memq symbol (symbols (left-branch tree))) (list 0)]
[(memq symbol (symbols (right-branch tree))) (list 1)]
[else (error "такого символа не существует" symbol)]))
(define (encode-symbol symbol tree)
(let ((next-branch (choose-branch symbol tree))
(bit (choose-bit symbol tree)))
(if (leaf? next-branch)
bit
(append bit (encode-symbol symbol next-branch)))))
#| END |#
#| BEGIN (Введите свое решение) |#
(define (element-of-set? x set)
(cond ((null? set) #f)
((equal? x (car set)) #t)
(else (element-of-set? x (cdr set)))))
(define (left-branch tree) (car tree))
(define (right-branch tree) (cadr tree))
(define (choose-branch symbol tree)
(cond [(element-of-set? symbol (symbols (left-branch tree))) (left-branch tree)]
[(element-of-set? symbol (symbols (right-branch tree))) (right-branch tree)]
[else (error "такого символа не существует" symbol)]))
(define (choose-bit symbol tree)
(cond [(element-of-set? symbol (symbols (left-branch tree))) (list 0)]
[(element-of-set? symbol (symbols (right-branch tree))) (list 1)]
[else (error "такого символа не существует" symbol)]))
(define (encode-symbol symbol tree)
(let ((next-branch (choose-branch symbol tree))
(bit (choose-bit symbol tree)))
(if (leaf? next-branch)
bit
(append bit (encode-symbol symbol next-branch)))))
#| END |#
#| BEGIN (Введите свое решение) |#
(define (left-branch tree) (car tree))
(define (right-branch tree) (cadr tree))
(define (choose-branch symbol tree)
(cond [(memq symbol (symbols (left-branch tree))) (left-branch tree)]
[(memq symbol (symbols (right-branch tree))) (right-branch tree)]
[else (error "такого символа не существует" symbol)]))
(define (choose-bit symbol tree)
(cond [(memq symbol (symbols (left-branch tree))) (list 0)]
[(memq symbol (symbols (right-branch tree))) (list 1)]
[else (error "такого символа не существует" symbol)]))
(define (encode-symbol symbol tree)
(let ((next-branch (choose-branch symbol tree))
(bit (choose-bit symbol tree)))
(if (leaf? next-branch)
bit
(append bit (encode-symbol symbol next-branch)))))
#| END |#