Solution to Exercise 1.4:

If `b`

is positive, the `+`

operator will be applied to `a`

and `b`

. Otherwise, the `-`

operator will be. This results in the absolute value of `b`

always being added to `a`

.

Skip to content
# Category: Programming

## Solution to SICP Exercise 1.4

## Solution to SICP Exercise 1.3

## Solution to SICP Exercise 1.2

## Solution to SICP Exercise 1.1

**
** **
** **
****
****
**

Bit fiddling.

Solution to Exercise 1.4:

If `b`

is positive, the `+`

operator will be applied to `a`

and `b`

. Otherwise, the `-`

operator will be. This results in the absolute value of `b`

always being added to `a`

.

Solution to Exercise 1.3:

`(define (square x)`

(* x x))

```
```(define (sum-of-squares x y)

(+ (square x) (square y)))

`(define (sum-of-squares-of-two-larger x y z)`

(cond ((and (<= x y) (<= x z)) (sum-of-squares y z))

((and (<= y x) (<= y z)) (sum-of-squares x z))

(else (sum-of-squares x y))))

Solution to Exercise 1.2:

`(/ (+ 5`

4

(- 2 (- 3 (+ 6 (/ 4 5)))))

(* 3

(- 6 2)

(- 2 7)))

This morning I began my third attempt at reading the programming classic Structure and Interpretation of Computer Programs, otherwise known as SICP. My earlier attempts stalled for various reasons, but this time I hope to get through the entire book. As an incentive to finish, I’m publicly promising to post my solutions to all the exercises in the book on this blog, starting with Exercise 1.1:

`>10`

10

```
```>(+ 5 3 4)

12

>(- 9 1)

8

>(/ 6 2)

3

>(+ (* 2 4) (- 4 6))

6

>(define a 3)

>(define b (+ a 1))

>(+ a b (* a b))

19

>(= a b)

#f

>(if (and (> b a) (**(cond ((= a 4) 6)**

((= b 4) (+ 6 7 a))

(else 25))

16

**
**>(+ 2 (if (> b a) b a))

6

`>(* (cond ((> a b) a)`

((< a b) b)

(else -1))

(+ a 1))

16