commit d90eecd9bb52086ee0c9278377af4d3579134f58 Author: NaiJi Date: Sun Jul 19 20:40:30 2020 +0300 Add 1.2, 1.3 and 1.7 exs diff --git a/sicp-ex-1.2.rkt b/sicp-ex-1.2.rkt new file mode 100644 index 0000000..9663a3e --- /dev/null +++ b/sicp-ex-1.2.rkt @@ -0,0 +1,7 @@ +(define the-numerator + (+ 5 4 (- 2 (- 3 (+ 6 (/ 4 5)))))) + +(define the-denominator + (* 3 (- 6 2)(- 2 7))) + +(/ the-numerator the-denominator) \ No newline at end of file diff --git a/sicp-ex-1.3.rkt b/sicp-ex-1.3.rkt new file mode 100644 index 0000000..55c32e9 --- /dev/null +++ b/sicp-ex-1.3.rkt @@ -0,0 +1,11 @@ +(define (square x) (* x x)) +(define (sum-of-squares x y) (+ (square x) (square y))) +(define (is-first-least? a b c) (and (< a b) (< a c))) + +(define a 9) +(define b 1) +(define c 10) + +(cond ((is-first-least? c a b)(sum-of-squares a b)) + ((is-first-least? a c b)(sum-of-squares c b)) + ((is-first-least? b a c)(sum-of-squares a c))) \ No newline at end of file diff --git a/sicp-ex-1.7.rkt b/sicp-ex-1.7.rkt new file mode 100644 index 0000000..b2bd89e --- /dev/null +++ b/sicp-ex-1.7.rkt @@ -0,0 +1,23 @@ +(define (sqrt-iter guess guess-prev x) + (if (good-enough? guess guess-prev) + guess + (sqrt-iter (improve guess x) guess + x))) + +(define (improve guess x) + (average guess (/ x guess))) + +(define (average x y) + (/ (+ x y) 2)) + +(define (good-enough? guess guess-prev) + (< (abs (- guess guess-prev)) 0.001)) + +(define (sqrt-new x) + (if (= x 0) x (sqrt-iter 1.0 999 x))) + +(sqrt-new 16) +(sqrt-new 1.0004) +(sqrt-new 1) +(sqrt-new 134895724398) +(sqrt-new 0)