-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 785e669
Showing
43 changed files
with
801 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
_instructions.txt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
(define (fn-rec n) | ||
(cond ((< n 3) n) | ||
(else (+ (fn-rec (- n 1)) | ||
(* 2 (fn-rec (- n 2))) | ||
(* 3 (fn-rec (- n 3))))))) | ||
|
||
(fn-rec 3) | ||
|
||
; TODO: iterative |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
(define (square n) | ||
(* n n)) | ||
|
||
(define (divides? a b) | ||
(= (remainder b a) 0)) | ||
|
||
(define (find-divisor n test-divisor) | ||
(cond ((> (square test-divisor) n) n) | ||
((divides? test-divisor n) test-divisor) | ||
(else (find-divisor n (+ test-divisor 1))))) | ||
|
||
(define (smallest-divisor n) | ||
(find-divisor n 2)) | ||
|
||
(define (prime? n) | ||
(= n (smallest-divisor n))) | ||
|
||
(smallest-divisor 199) | ||
(smallest-divisor 1999) | ||
(smallest-divisor 19999) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
; Chicken Scheme has been used. | ||
|
||
(define (square n) | ||
(* n n)) | ||
|
||
(define (divides? a b) | ||
(= (remainder b a) 0)) | ||
|
||
(define (find-divisor n test-divisor) | ||
(cond ((> (square test-divisor) n) n) | ||
((divides? test-divisor n) test-divisor) | ||
(else (find-divisor n (+ test-divisor 1))))) | ||
|
||
(define (smallest-divisor n) | ||
(find-divisor n 2)) | ||
|
||
(define (prime? n) | ||
(= n (smallest-divisor n))) | ||
|
||
(define (report-prime elapsed-time) | ||
(display " *** ") | ||
(display elapsed-time)) | ||
|
||
(define (start-prime-test n start-time) | ||
(if (prime? n) | ||
(report-prime (- (current-milliseconds) start-time)))) | ||
|
||
(define (timed-prime-test n) | ||
(newline) | ||
(display n) | ||
(newline) | ||
(start-prime-test n (current-milliseconds))) | ||
|
||
(define (search-for-primes n) | ||
(cond ((prime? n) n) | ||
(else (search-for-primes (+ n 2))))) | ||
|
||
(time (search-for-primes 10000000001 )) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
; Chicken Scheme has been used. | ||
|
||
(define (square n) | ||
(* n n)) | ||
|
||
(define (next n) | ||
(if (= n 2) 3 | ||
(+ n 2))) | ||
|
||
(define (divides? a b) | ||
(= (remainder b a) 0)) | ||
|
||
(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 (smallest-divisor n) | ||
(find-divisor n 2)) | ||
|
||
(define (prime? n) | ||
(= n (smallest-divisor n))) | ||
|
||
(define (report-prime elapsed-time) | ||
(display " *** ") | ||
(display elapsed-time)) | ||
|
||
(define (start-prime-test n start-time) | ||
(if (prime? n) | ||
(report-prime (- (current-milliseconds) start-time)))) | ||
|
||
(define (search-for-primes n) | ||
(cond ((prime? n) n) | ||
(else (search-for-primes (+ n 2))))) | ||
|
||
(time (search-for-primes 10000000001 )) | ||
(time (search-for-primes 100000000001 )) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
; Chicken Scheme has been used. | ||
|
||
(define (square n) | ||
(* n n)) | ||
|
||
(define (expmod base exp m) | ||
(cond ((= exp 0) 1) | ||
((even? exp) | ||
(remainder (square (expmod base (/ exp 2) m)) | ||
m)) | ||
(else | ||
(remainder (* base (expmod base (- exp 1) m)) | ||
m)))) | ||
|
||
(define (fermat-test n) | ||
(define (try-it a) | ||
(= (expmod a n n) a)) | ||
(try-it (+ 1 (random (- n 1))))) | ||
|
||
(define (fast-prime? n times) | ||
(cond ((= times 0) #t) | ||
((fermat-test n) (fast-prime? n (- times 1))) | ||
(else #f))) | ||
|
||
(define (search-for-primes n) | ||
(cond ((fast-prime? n 1000) n) | ||
(else (search-for-primes (+ n 2))))) | ||
|
||
(time (search-for-primes 1000000001 )) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
(define (square n) | ||
(* n n)) | ||
|
||
(define (expmod base exp m) | ||
(cond ((= exp 0) 1) | ||
((even? exp) | ||
(remainder (square (expmod base (/ exp 2) m)) | ||
m)) | ||
(else | ||
(remainder (* base (expmod base (- exp 1) m)) | ||
m)))) | ||
|
||
(define (fermat-test n) | ||
(define (try-it a) | ||
(= (expmod a n n) a)) | ||
(try-it (+ 1 (random (- n 1))))) | ||
|
||
(define (fast-prime? n times) | ||
(cond ((= times 0) #t) | ||
((fermat-test n) (fast-prime? n (- times 1))) | ||
(else #f))) | ||
|
||
(define (search-for-primes n) | ||
(cond ((fast-prime? n 100) n) | ||
(else (search-for-primes (+ n 2))))) | ||
|
||
(fast-prime? 561 100) | ||
(fast-prime? 1105 100) | ||
(fast-prime? 1729 100) | ||
(fast-prime? 2465 100) | ||
(fast-prime? 2821 100) | ||
(fast-prime? 6601 100) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
(define (cube x) (* x x x)) | ||
|
||
(define (sum term a next b) | ||
(if (> a b) | ||
0 | ||
(+ (term a) | ||
(sum term (next a) next b)))) | ||
|
||
(define (simpson-coef i n) | ||
(cond ((= i 0) 1) | ||
((= i n) 1) | ||
((= (modulo i 2) 0) 2) | ||
((= (modulo i 2) 1) 4) | ||
)) | ||
|
||
(define (integral f a b dx) | ||
(define (add-dx x) (+ x dx)) | ||
(* (sum f (+ a (/ dx 2.0)) add-dx b) | ||
dx)) | ||
|
||
(define (integral-simpson f a b n) | ||
(define h (/ (- b a) n)) | ||
(define (step x) (+ x 1)) | ||
(define (func k) | ||
(define (y_k k) | ||
(f (+ a (* k h)))) | ||
(cond ((or (= k 0) (= k n)) (y_k k)) | ||
((even? k) (* 2 (y_k k))) | ||
(else (* 4 (y_k k))))) | ||
(* (/ h 3) (sum func a step n))) | ||
|
||
(integral-simpson cube 0 1 101) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
(define (cube x) (* x x x)) | ||
|
||
(define (sum term a next b) | ||
(define (iter a result) | ||
(if (> a b) | ||
result | ||
(iter (next a) (+ result (term a))))) | ||
(iter a 0)) | ||
|
||
(define (simpson-coef i n) | ||
(cond ((= i 0) 1) | ||
((= i n) 1) | ||
((= (modulo i 2) 0) 2) | ||
((= (modulo i 2) 1) 4) | ||
)) | ||
|
||
(define (integral f a b dx) | ||
(define (add-dx x) (+ x dx)) | ||
(* (sum f (+ a (/ dx 2.0)) add-dx b) | ||
dx)) | ||
|
||
(define (integral-simpson f a b n) | ||
(define h (/ (- b a) n)) | ||
(define (step x) (+ x 1)) | ||
(define (func k) | ||
(define (y_k k) | ||
(f (+ a (* k h)))) | ||
(cond ((or (= k 0) (= k n)) (y_k k)) | ||
((even? k) (* 2 (y_k k))) | ||
(else (* 4 (y_k k))))) | ||
(* (/ h 3) (sum func a step n))) | ||
|
||
(integral-simpson cube 0 1 101) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
(define (product term a next b) | ||
(define (iter a result) | ||
(if (> a b) | ||
result | ||
(iter (next a) (* result (term a))))) | ||
(iter a 1)) | ||
|
||
(define (factorial n) | ||
(define (inc x) (+ x 1)) | ||
(define (func x) x) | ||
(product func 1 inc n)) | ||
|
||
(define (ceiled-even n) | ||
(if (even? n) n | ||
(+ n 1))) | ||
|
||
(define (ceiled-odd n) | ||
(if (even? n) (- n 1) | ||
n)) | ||
|
||
(define (calculate-pi n) | ||
(define (inc x) (+ x 1)) | ||
(define numerator (product ceiled-even 2 inc (+ 2 n))) | ||
(define denominator (product ceiled-odd 3 inc (+ 3 n))) | ||
(* 4 (/ numerator denominator))) | ||
|
||
(calculate-pi 160) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
(define (accumulate combiner null-value term a next b) | ||
(define (iter a result) | ||
(if (> a b) | ||
result | ||
(iter (next a) (combiner result (term a))))) | ||
(iter a null-value)) | ||
|
||
(define (sum term a next b) | ||
(if (> a b) | ||
0 | ||
(+ (term a) | ||
(sum term (next a) next b)))) | ||
|
||
(define (accumulate-rec combiner null-value term a next b) | ||
(if (> a b) | ||
null-value | ||
(combiner (term a) (accumulate-rec combiner null-value term (next a) next b)))) | ||
|
||
(define (product term a next b) | ||
(define (func x y) (* x y)) | ||
;(display (func 2 3)) | ||
(accumulate func 1 term a next b)) | ||
|
||
(define (sum term a next b) | ||
(define (func x y) (+ x y)) | ||
(accumulate func 0 term a next b)) | ||
|
||
|
||
(define (factorial n) | ||
(define (inc x) (+ x 1)) | ||
(define (func x) x) | ||
(product func 1 inc n)) | ||
|
||
(define (ceiled-even n) | ||
(if (even? n) n | ||
(+ n 1))) | ||
|
||
(define (ceiled-odd n) | ||
(if (even? n) (- n 1) | ||
n)) | ||
|
||
(define (calculate-pi n) | ||
(define (inc x) (+ x 1)) | ||
(define numerator (product ceiled-even 2 inc (+ 2 n))) | ||
(define denominator (product ceiled-odd 3 inc (+ 3 n))) | ||
(* 4 (/ numerator denominator))) | ||
|
||
(calculate-pi 1) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
(define (average x1 x2) (/ (+ x1 x2) 2)) | ||
|
||
(define tolerance 0.00001) | ||
|
||
(define (fixed-point f first-guess) | ||
(define (close-enough? v1 v2) | ||
(< (abs (- v1 v2)) tolerance)) | ||
(define (try guess) | ||
(let ((next (f guess))) | ||
(if (close-enough? guess next) | ||
next | ||
(try next)))) | ||
(try first-guess)) | ||
|
||
(define (sqrt x) | ||
(fixed-point (lambda (y) (y (/ x y))) | ||
1.0)) | ||
|
||
(fixed-point (lambda (x) (+ 1 (/ 1 x))) 1.0) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
(define tolerance 0.00001) | ||
|
||
(define (fixed-point f first-guess) | ||
(define (close-enough? v1 v2) | ||
(< (abs (- v1 v2)) tolerance)) | ||
(define (try guess) | ||
(let ((next (f guess))) | ||
(if (close-enough? guess next) | ||
next | ||
(try next)))) | ||
(try first-guess)) | ||
|
||
(fixed-point (lambda (x) (/ (log 1000) (log x))) 2) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
(define (cont-frac n d k) | ||
(define (cont-frac-iter i result) | ||
(let ((n_k (n i)) | ||
(d_k (d i))) | ||
(cond ((= i 0) result) | ||
((= i k) (/ n_k d_k)) | ||
(else (cont-frac-iter (- i 1) result))))) | ||
(cont-frac-iter k 0)) | ||
|
||
(/ 1 (cont-frac (lambda (i) 1.0) | ||
(lambda (i) 1.0) | ||
7)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
(define (tan-cf x k) | ||
(define (numerator x i) | ||
(if (= i 0) x | ||
(* x x))) | ||
(define (denominator i) | ||
(- (* (+ i 1) 2) 1)) | ||
(define (sub x k i) | ||
(cond ((= i k) (/ (numerator x i) (denominator i))) | ||
(else (/ (numerator x i) (- (denominator i) (sub x k (+ i 1))))))) | ||
(sub x k 0)) | ||
|
||
(tan-cf 0.5 100) |
Oops, something went wrong.