【SICP练习】97 练习2.70

练习2.70

既然要解码,那必须先将树给定义好了。

(define tree (generate-huffman-tree((A 2) (NA 16) (BOOM 1) (SHA 3) (GET 2) (YIP 9) (JOB 2) (WAH 1))

然后就是来编码题目中给出的歌词了。

(define message(Get a job)) (define message(Sha na na na na na na na na)) (define message(Wah yip yip yip yip yip yip yip yip yip)) (define message(Sha boom)) (encode message tree) ;Value: (1 1 0 0 1 1 1 1 0 1 1 1 1 1) (encode message tree) ;Value: (1 1 1 0 0 0 0 0 0 0 0 0) (encode message tree) ;Value: (1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0) (encode message tree) ;Value: (1 1 1 0 1 1 0 1 1)

由于题目中还要求计算编码所需的2进制位树,我们可以用length来计算。

(length (encode message tree)) ;Value: 14 (length (encode message tree)) ;Value: 12 (length (encode message tree)) ;Value: 23 (length (encode message tree)) ;Value: 9

因此将这4个数乘以各自出现的次数然后相加便是所需的2进制位数了,即84。
如果要采取定长编码的话,题目中的8个字符由于每一个都要占用到3个2进制位以上,而歌词中1共用了36个字符,乘起来便是用定长编码最少需要的2进制位数了,也即便108。

相关文章

文章浏览阅读8.4k次,点赞8次,收藏7次。SourceCodester Onl...
文章浏览阅读3.4k次,点赞46次,收藏51次。本文为大家介绍在...
文章浏览阅读1.1k次。- php是最优秀, 最原生的模板语言, 替代...
文章浏览阅读1.1k次,点赞18次,收藏15次。整理K8s网络相关笔...
文章浏览阅读1.2k次,点赞22次,收藏19次。此网络模型提供了...
文章浏览阅读1.1k次,点赞14次,收藏19次。当我们谈论网络安...