diff --git a/sicp-2.5-notes b/sicp-2.5-notes deleted file mode 100644 index 941bc3b..0000000 --- a/sicp-2.5-notes +++ /dev/null @@ -1,41 +0,0 @@ -(car (cons x y)) - -(car (lambda (m) (m x y))) - -((lambda (m) (m x y)) (lambda (p q) p))) - -(lambda (x y) x))) - -x - -(define (cdr z) (z (lambda (x y) y))) - - - -2.5 - Given that we know the bases - 2, and 3, we only need to find the exponents. - -For example, 6 can only be represented one way - 2^1 3^1, meaning our pair of numbers a and b are 1 - -So, cons is simple: - -(define (cons x y) (* (expt 2 x) (expt 3 y))) - -Now we're left solving for a and b - -log(2^a * 3^b) = alog(2) + blog(3) - -call our "cons" value x - -Because integer factorizations are unique we only need to find the biggest power of two and three that -go into the number. - -(define (power-of-x value base) - (define (iter current-power) - (if (< ((expt base current-power) value) - (iter (+ current-power 1)) - (current-power)))) - -Then with this we can write car and cdr as - -(define (car int) (power-of-x int 2)) -(define (cdr int) (power-of-x int 3))