codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
; phil harvey's puzzle (define (range . args) (case (length args) ((1) (range 0 (car args) (if (negative? (car args)) -1 1))) ((2) (range (car args) (cadr args) (if (< (car args) (cadr args)) 1 -1))) ((3) (let ((le? (if (negative? (caddr args)) >= <=))) (let loop ((x(car args)) (xs '())) (if (le? (cadr args) x) (reverse xs) (loop (+ x (caddr args)) (cons x xs)))))) (else (error 'range "unrecognized arguments")))) (define (square x) (* x x)) (define (cube x) (* x x x)) (define (choose n k) (if (zero? k) 1 (* n (/ k) (choose (- n 1) (- k 1))))) (display (choose 16 8)) (newline) (define (combs n xs) (define (comb x xs) (if (null? xs) xs (if (pair? (car xs)) (cons (append (list x) (car xs)) (comb x (cdr xs))) (cons (list x (car xs)) (comb x (cdr xs)))))) (if (or (zero? n) (null? xs)) (list) (if (= n 1) xs (append (comb (car xs) (combs (- n 1) (cdr xs))) (combs n (cdr xs)))))) (display (let loop ((xss (combs 8 (range 1 17)))) (let* ((xs (car xss)) (s1 (apply + xs)) (s2 (apply + (map square xs))) (s3 (apply + (map cube xs)))) (if (and (= s1 68) (= s2 748) (= s3 9248)) xs (loop (cdr xss))))))
Private
[
?
]
Run code
Submit