]> git.rkrishnan.org Git - sicp.git/commitdiff
solution to 2.70
authorRamakrishnan Muthukrishnan <vu3rdd@gmail.com>
Thu, 16 Sep 2010 18:28:12 +0000 (23:58 +0530)
committerRamakrishnan Muthukrishnan <vu3rdd@gmail.com>
Thu, 16 Sep 2010 18:28:12 +0000 (23:58 +0530)
src/sicp/ex2_70.rkt [new file with mode: 0644]

diff --git a/src/sicp/ex2_70.rkt b/src/sicp/ex2_70.rkt
new file mode 100644 (file)
index 0000000..98135ad
--- /dev/null
@@ -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
+|#
+