mirror of
https://github.com/usatiuk/psil.git
synced 2025-10-28 10:47:49 +01:00
36 lines
703 B
Plaintext
36 lines
703 B
Plaintext
(define (equal? a b)
|
|
(if (nil? a) (if (nil? b) 1 0)
|
|
(if (atom a)
|
|
(if (atom b) (= a b) 0)
|
|
(if (atom b) 0 (if (equal? (car a) (car b)) (equal? (cdr a) (cdr b)) 0))
|
|
)
|
|
)
|
|
)
|
|
|
|
(define (empty? l)
|
|
(equal? l (nil))
|
|
)
|
|
|
|
(define (comb-impl list cur n)
|
|
(if (empty? list)
|
|
(if (= cur n) 1 0)
|
|
(+
|
|
(comb-impl (cdr list) cur n)
|
|
(comb-impl (cdr list) (+ cur (car list)) n)
|
|
)
|
|
)
|
|
)
|
|
|
|
(define (comb list n)
|
|
(comb-impl list 0 n))
|
|
|
|
(comb (quote(1)) 1)
|
|
(comb (quote(1 1)) 1)
|
|
(comb (quote(1 1)) 2)
|
|
(comb (quote(1 1 1 2)) 3)
|
|
(comb (quote(1 2 1 2)) 3)
|
|
(comb (quote(1 3 4 2)) 3)
|
|
(comb (quote(1 2 3 4 5)) 15)
|
|
(comb (quote(1 2 3 4 5)) 10)
|
|
(comb (quote(1 2 3 4 5)) 5)
|