Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang scheme
- (define (pred-census p k) ;cant pass sum-of-3-squares as p because it needs 4 arguments, but only takes 3 here
- (define (pred-census-aux a b c counter)
- (cond ((> c k) counter)
- ((> a k) (pred-census-aux 1 (+ b 1) c counter))
- ((> b k) (pred-census-aux a 1 (+ c 1) counter))
- ((p a b c) (pred-census-aux (+ a 1) b c (+ counter 1)))
- (else (pred-census-aux (+ a 1) b c counter))))
- (pred-census-aux 1 1 1 0))
- (define (pythag a b c)
- (= (* c c) (+ (* a a) (* b b))))
- (define (sum-of-3-squares a b c k)
- (= k (+ (* a a) (* b b) (* c c))))
- ;> (/ (pred-census pythag 50) 2) ;divide by two because pred-census detects triples twice, ie: 3 4 5 and 4 3 5
- ;20
- ;> (/ (pred-census pythag 20) 2)
- ;6
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement