]> git.rkrishnan.org Git - sicp.git/commitdiff
solution to 3.55, 3.56 and 3.57
authorRamakrishnan Muthukrishnan <vu3rdd@gmail.com>
Sat, 9 Jul 2011 15:30:49 +0000 (21:00 +0530)
committerRamakrishnan Muthukrishnan <vu3rdd@gmail.com>
Sat, 9 Jul 2011 15:30:49 +0000 (21:00 +0530)
src/sicp/ex3_55.rkt [new file with mode: 0644]
src/sicp/ex3_56.rkt [new file with mode: 0644]
src/sicp/ex3_57.rkt [new file with mode: 0644]

diff --git a/src/sicp/ex3_55.rkt b/src/sicp/ex3_55.rkt
new file mode 100644 (file)
index 0000000..e53d5e8
--- /dev/null
@@ -0,0 +1,21 @@
+#lang racket
+
+(define (partial-sums s)
+  (define (partial-sums-iter sum stream)
+    (cons-stream (+ sum (stream-car stream))
+                 (partial-sums-iter (+ sum (stream-car stream))
+                                    (stream-cdr stream))))
+  (partial-sums-iter 0 s))
+
+#|
+> (stream-ref (partial-sums (integers-starting-from 1)) 0)
+1
+> (stream-ref (partial-sums (integers-starting-from 1)) 1)
+3
+> (stream-ref (partial-sums (integers-starting-from 1)) 2)
+6
+> (stream-ref (partial-sums (integers-starting-from 1)) 3)
+10
+> (stream-ref (partial-sums (integers-starting-from 1)) 4)
+15
+|#
\ No newline at end of file
diff --git a/src/sicp/ex3_56.rkt b/src/sicp/ex3_56.rkt
new file mode 100644 (file)
index 0000000..d06885d
--- /dev/null
@@ -0,0 +1,40 @@
+#lang racket
+
+(define S (cons-stream 1 (merge (scale-stream S 2)
+                                (merge (scale-stream S 3)
+                                       (scale-stream S 5)))))
+
+#|
+
+> (display-stream S)
+
+1
+2
+3
+4
+5
+6
+8
+9
+10
+12
+15
+16
+18
+20
+24
+25
+27
+30
+32
+36
+40
+45
+48
+50
+54
+60
+64
+72
+
+|#
diff --git a/src/sicp/ex3_57.rkt b/src/sicp/ex3_57.rkt
new file mode 100644 (file)
index 0000000..e6735fc
--- /dev/null
@@ -0,0 +1,15 @@
+#lang racket
+
+#|
+
+We do (n - 1) additions for the memo-proc based delay implementation. 
+
+With the simple delay implementation, for a given n, it constructs the 
+fib sequence:
+
+ fib (n) = fib (n-1) + fib (n-2)
+
+In our case, the number of additions for nth fib will be equal to the
+number of additions for the fib(n-1) and that for fib(n-2) + 1
+
+|#
\ No newline at end of file