From cb6abc68114fa8abb2613833d241a7b6293cb8f3 Mon Sep 17 00:00:00 2001 From: Ramakrishnan Muthukrishnan Date: Thu, 16 Sep 2010 23:58:12 +0530 Subject: [PATCH] solution to 2.70 --- src/sicp/ex2_70.rkt | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/sicp/ex2_70.rkt diff --git a/src/sicp/ex2_70.rkt b/src/sicp/ex2_70.rkt new file mode 100644 index 0000000..98135ad --- /dev/null +++ b/src/sicp/ex2_70.rkt @@ -0,0 +1,28 @@ +#lang racket +(require rackunit + "ex2_69.rkt" + "ex2_68.rkt") + +(define symbol-pairs '((A 2) (BOOM 1) (GET 2) (JOB 2) (NA 16) (SHA 3) (YIP 9) (WAH 1))) + +(define huffman-tree (generate-huffman-tree symbol-pairs)) + +(define test-message '(GET A JOB + SHA NA NA NA NA NA NA NA NA + GET A JOB + SHA NA NA NA NA NA NA NA NA + WAH YIP YIP YIP YIP YIP YIP YIP YIP YIP + SHA BOOM)) + +(check = + (length (encode test-message + huffman-tree)) + 84) + +#| +a. Encoding requires 84 bits. +b. There are 8 symbols, so we use 3 bits/symbol. + (length test-message) is 36. So total length of the encoded + song, had it been fixed length code, will be (* 36 3) = 108 +|# + -- 2.45.2