Код Ревью
Сравни свои решения
#| BEGIN (Write your solution here) |#
(define (make-triple-sum n s)
(filter (lambda (triplet)
(= (accumulate + 0 triplet) s))
(generate-triplets n)))
(define (generate-triplets n)
(flatmap (lambda (i)
(flatmap (lambda (j)
(map (lambda (k)
(list i j k))
(enumerate-interval 1 (- j 1))))
(enumerate-interval 1 (- i 1))))
(enumerate-interval 1 n)))
(define (flatmap proc seq)
(accumulate append nil (map proc seq)))
(define (accumulate op initial sequence)
(if (null? sequence)
initial
(op (car sequence)
(accumulate op initial (cdr sequence)))))
(define (enumerate-interval a b)
(define (iter a b lst)
(if (> a b)
lst
(iter a (- b 1) (cons b lst))))
(iter a b '()))
(define (filter predicate sequence)
(cond ((null? sequence) nil)
((predicate (car sequence))
(cons (car sequence)
(filter predicate (cdr sequence))))
(else (filter predicate (cdr sequence)))))
(define nil '())
#| END |#