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 |#