codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
; floupia (define (filter pred? xs) (let loop ((xs xs) (ys '())) (cond ((null? xs) (reverse ys)) ((pred? (car xs)) (loop (cdr xs) (cons (car xs) ys))) (else (loop (cdr xs) ys))))) (define (negate x) (- x)) (define (sum xs) (apply + xs)) (define (binom n m) (let loop ((n n) (m m) (b 1)) (if (zero? m) b (loop (- n 1) (- m 1) (* b n (/ m)))))) (display (binom 5 3)) (newline) (display (binom (+ 5 3 -1) 3)) (newline) (define (combs n xs) ; combinations without replacement (if (= n 0) (list (list)) (if (null? xs) (list) (append (map (lambda (xss) (cons (car xs) xss)) (combs (- n 1) (cdr xs))) (combs n (cdr xs)))))) (display (combs 3 '(a b c d e))) (newline) (define (combs n xs) ; combinations with replacement (if (= n 0) (list (list)) (if (null? xs) (list) (append (map (lambda (xss) (cons (car xs) xss)) (combs (- n 1) xs)) (combs n (cdr xs)))))) (display (combs 3 '(a b c d e))) (newline) (define (floupia price coins) (let ((coins (append coins (map negate coins)))) (let loop ((n 1)) (let ((xs (filter (lambda (xs) (= (sum xs) price)) (combs n coins)))) (if (null? xs) (loop (+ n 1)) xs))))) (display (floupia 13 '(2 5 10))) (newline) (display (floupia 18 '(1 2 5 10))) (newline) (display (floupia 17 '(1 3 7 31 153))) (newline)
Private
[
?
]
Run code
Submit