Skip to content

sudoabuser/sicp-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 

Repository files navigation

sicp-

EXERCISE 1.1.8

(define (cbrt-iter guess x)
(if (good-enough? guess x)
       guess
       (cbrt-iter (improve guess x)x)))

(define (good-enough? guess x)
  (< (abs (- (cube guess) x)) 0.000000001))

(define (cube x) (* x x x)) 

(define (improve guess x)
  (/ (+ (/ x (square guess) ) (* 2 guess) ) 3 ))

(define (square x) ( * x x))

(define (kupkok x)
  (cbrt-iter 1.0 x))
__computing iterative factorial__
(define (factorial n)
  (fact-iter 1 1 n))
(define (fact-iter product counter max-count)
  (if (> counter max-count)
      product
      (fact-iter (* product counter) (+ 1 counter) max-count)))
      
__computing recursive factorial__
(define (factorial n)
  (cond ((= n 1) 1)
        ((= n 0) 1)
        (else (* n (factorial (- n 1))))))
__some iterations of recursive count-change function *not completed*__
(define (count-change amount) (cc amount 5))
(define (cc amount kinds-of-coins)
(cond ((= amount 0) 1)
((or (< amount 0) (= kinds-of-coins 0)) 0)
(else (+ (cc amount
(- kinds-of-coins 1))
(cc (- amount
(first-denomination
kinds-of-coins))
kinds-of-coins)))))
(define (first-denomination kinds-of-coins)
(cond ((= kinds-of-coins 1) 1)
((= kinds-of-coins 2) 5)
((= kinds-of-coins 3) 10)
((= kinds-of-coins 4) 25)
((= kinds-of-coins 5) 50)))

(cc 100 5)
 (+ (cc 100 4)
    (+ (cc 100 3)
       (+ (cc 100 2)
          (+ (cc 100 1)
             (+ 0
               1)))))
             
             (cc 95 2)
             (+ (cc 95 1)
                
          (cc 90 3)
       (cc 75 4)
    
    (cc 50 5)
*Exercise 1.11:* 
__recursive__

(define (f n)
(if (< n 3)
   n
   (+ (f (- n 1)) (* (f (- n 2)) 2) (* (f (- n 3)) 3))))
__iterative__
--?
*Exercise 1.12:*
(define (pascal row column)
  (cond ((= row column) 1)
        ((< row column) 0)
        ((< column 0) 0)
        ((< row 0) 0)
        ((= column 1) 1)
        (else (+ (pascal (- row 1) (- column 1)) (pascal (- row 1) column)))))
        
*Exercise 1.21:*
(define (smallest-divisor n counter)
(cond ((= counter n) counter)
    ((= (remainder n counter) 0) counter)
    (else (smallest-divisor n (+ 1 counter)))))
(define (square x) (* x x))
(define (ekok n) (smallest-divisor n 2))
*Exercise 1.23:*
(define (runtime)
 (current-milliseconds))

(define (smallest-divisor n) (find-divisor n 2))

(define (find-divisor n test-divisor)
 (cond ((> (square test-divisor) n) n)
       ((divides? test-divisor n) test-divisor)
       (else (find-divisor n (next test-divisor)))))

(define (next x)
 (cond ((= x 2)(+ 1 x))
        (else (+ 2 x)))) 

(define (divides? a b) (= (remainder b a) 0))

(define (square x) (* x x))

(define (prime? n)
 (= n (smallest-divisor n)))
 
(define (timed-prime-test n)
 (newline)
 (display n)
 (start-prime-test n (runtime)))
 
(define (start-prime-test n start-time)
 (if (prime? n)
     (report-prime (- (runtime) start-time))))
     
(define (report-prime elapsed-time)
 (display " *** ")
 (display elapsed-time))
*Exercise 1.36*
(define tolerance 0.00001)
(define (fixed-point f first-guess)
 (define (close-enough? v1 v2)
   (< (abs (- v1 v2))
      tolerance))
 (define (try guess)
   (newline)
   (display (f guess))
   (newline)
   (let ((next (f guess)))
     (if (close-enough? guess next)
         next
         (try next))))
 (try first-guess))
;(fixed-point (lambda (x) (+ 1 (/ 1 x))) 1)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published