## Solution to SICP Exercise 2.2

Solution to Exercise 2.2:

```(define (make-segment start end) (cons start end))```

``` (define (start-segment s) (car s)) (define (end-segment s) (cdr s)) (define (make-point x y) (cons x y)) (define (x-point p) (car p)) (define (y-point p) (cdr p)) (define (avg a b) (/ (+ a b) 2)) ```

```(define (midpoint-segment s) (let ((start (start-segment s)) (end (end-segment s))) (make-point (avg (x-point start) (x-point end)) (avg (y-point start) (y-point end))))) ```

## Solution to SICP Exercise 2.1

Solution to Exercise 2.1:

```(define (make-rat n d) (let ((new-n (if (negative? d) (- n) n)) (new-d (abs d))) (let ((g (gcd new-n new-d))) (cons (/ new-n g) (/ new-d g))))) ```

## Solution to SICP Exercise 1.46

Solution to Exercise 1.46:

```(define (iterative-improve good-enough? improve) (define (iter initial-guess) (if (good-enough? initial-guess) initial-guess (iter (improve initial-guess)))) iter) ```

## End Breast Cancer – Win an iPod nano

Would you like to win an Apple iPod nano? Would you like to put an end to breast cancer? Now you can do both.

As part of my fundraising efforts for the Weekend to End Breast Cancer, I’m raffling off a 4GB Apple iPod nano.

Imagine all the hours of entertainment you could enjoy with a new iPod nano. Or, if you already own an iPod, how happy you could make a friend or family member by giving it as a gift. Or how much more money you could raise for breast cancer research if you donated it back for another raffle.

To enter the raffle, just sponsor my walk. One entry for a \$5 donation or five for \$20.

You can make your donation here: http://www.endcancer.ca/goto/kendyck

The winner will be drawn on September 10, 2007 or the day I reach my goal of raising \$2500, whichever comes first.

If you win, you will be contacted by email so make sure you leave a valid email address when you make your donation.

As winner you will be able choose the colour in which you’d like the iPod (pink shown above) and where you’d like it delivered.

All the proceeds go directly to the Princess Margaret Hospital.

Thank you and good luck.

## Solution to SICP Exercise 1.44

Solution to Exercise 1.44:

```(define (average-3 a b c) (/ (+ a b c) 3))```

``` (define (smooth f dx) (lambda (x) (average-3 (f (- x dx)) (f x) (f (+ x dx))))) ```

```(define (n-fold-smooth f dx n) (repeated (lambda (g) (smooth g dx)) n) f) ```

## Solution to SICP Exercise 1.43

Solution to Exercise 1.43:

```(define (compose f g) (lambda (x) (f (g x)))) (define (inc i) (+ i 1))```

``` ```

```(define (repeated f n) (define (iter i result) (if (= i n) result (iter (inc i) (compose f result)))) (iter 1 f)) ```

## Solution to SICP Exercise 1.41

Solution to Exercise 1.41:

```(define (double f) (lambda (x) (f (f x)))) ```

Output:

```> (define (inc x) (+ x 1)) > (((double (double double)) inc) 5) 21 ```

## Solution to SICP Exercise 1.39

Solution to Exercise 1.39:

```(define (cont-frac n d k) (define (iter i sub-expr) (if (= i 0) sub-expr (iter (- i 1) (/ (n i) (+ (d i) sub-expr))))) (iter (- k 1) (/ (n k) (d k))))```

``` ```

```(define (tan-cf x k) (let ((x-squared-negated (- (* x x)))) (cont-frac (lambda (i) (if (= i 1) x x-squared-negated)) (lambda (i) (- (* 2 i) 1)) k))) ```

## Solution to SICP Exercise 1.38

Solution to Exercise 1.38:

```(define (cont-frac n d k) (define (iter i sub-expr) (if (= i 0) sub-expr (iter (- i 1) (/ (n i) (+ (d i) sub-expr))))) (iter (- k 1) (/ (n k) (d k))))```

``` ```

```(define (e k) (+ (cont-frac (lambda (i) 1.0) (lambda (i) (if (= (remainder (+ i 1) 3) 0) (* 2 (/ (+ i 1) 3)) 1.0)) k) 2)) ```