Skip to content

Instantly share code, notes, and snippets.

@vdeemann
Last active September 11, 2023 08:20
Show Gist options
  • Save vdeemann/669557064df3e61d0be581f3b20b3075 to your computer and use it in GitHub Desktop.
Save vdeemann/669557064df3e61d0be581f3b20b3075 to your computer and use it in GitHub Desktop.
#lang sicp
;#lang racket
(define (square x) (* x x))
(define (sum-of-squares x y)
(+ (square x) (square y)))
(define (sum-two-largest a b c)
(cond
[(or (>= a b c) (>= b a c)) (sum-of-squares a b)]
[(or (>= a c b) (>= c a b)) (sum-of-squares a c)]
[else (sum-of-squares c b)]
))
;(require racket/trace)
;(trace sum-two-largest)
(sum-two-largest 1 1 1)
(sum-two-largest 3 2 1)
(sum-two-largest 2 3 1)
(sum-two-largest 2 1 3)
(sum-two-largest 3 1 3)
(sum-two-largest 3 3 1)
(sum-two-largest 1 3 3)
(sum-two-largest 3 3 3)
#lang racket
;#lang sicp
(define (square x) (* x x))
(define (improve guess x)
(average guess (/ x guess)))
(define (average x y)
(/ (+ x y) 2))
(define (sqrt x)
(sqrt-iter 1.0 x))
(define (sqrt-iter guess x)
(new-if (good-enough? guess x)
guess
(sqrt-iter (improve guess x) x)))
(define (new-if predicate
then-clause
else-clause)
(cond (predicate then-clause)
(else else-clause)))
(define (good-enough? guess x)
(< (abs (- (square guess) x)) 0.001))
;(define (sqrt-iter guess x)
; (if (good-enough? guess x)
; guess
; (sqrt-iter (improve guess x) x)))
(require racket/trace)
(trace sqrt-iter)
(trace good-enough?)
(trace new-if)
(trace square)
(trace improve)
(trace average)
(sqrt 9)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment