From 3f804070ae64fb8d44227676eb8c02074c144e25 Mon Sep 17 00:00:00 2001 From: Ramakrishnan Muthukrishnan <vu3rdd@gmail.com> Date: Sat, 9 Jul 2011 21:00:49 +0530 Subject: [PATCH] solution to 3.55, 3.56 and 3.57 --- src/sicp/ex3_55.rkt | 21 +++++++++++++++++++++ src/sicp/ex3_56.rkt | 40 ++++++++++++++++++++++++++++++++++++++++ src/sicp/ex3_57.rkt | 15 +++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 src/sicp/ex3_55.rkt create mode 100644 src/sicp/ex3_56.rkt create mode 100644 src/sicp/ex3_57.rkt diff --git a/src/sicp/ex3_55.rkt b/src/sicp/ex3_55.rkt new file mode 100644 index 0000000..e53d5e8 --- /dev/null +++ b/src/sicp/ex3_55.rkt @@ -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 index 0000000..d06885d --- /dev/null +++ b/src/sicp/ex3_56.rkt @@ -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 index 0000000..e6735fc --- /dev/null +++ b/src/sicp/ex3_57.rkt @@ -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 -- 2.45.2