19. 겹친 매핑
• 차례열 패러다임의 쓰임새를 넓혀서, 겹친 루프를 써서 나타낼 수
있는 계산 문제를 표현
• 양의 정수 n, I, j가 있을때, 1 <= j < I <= n 만족하고 I + j 의 값이
소수가 되는 i와 j의 모든 순서 쌍을 구하는 문제
• N = 6 일 경우.
20. • Enumerate
– n보다 작거나 같은 양의
정수로 이루어진 모든 순서
쌍을 차례열로 묶어냄
• Filter
– 그 가운데 그 합이 소수인
쌍들만 거르개로 고름.
• Map
– 골라낸 쌍(I,j)에 대해 트리
플(I,j, i+j)를 만듬.
• Accumulate
(accumulate append
nil
(map (lambda (i)
(map (lambda ( j) (list i j))
(enumerate-interval 1 (- i 1))))
(enumerate-interval 1 n)))
(define (flatmap proc seq)
(accumulate append nil (map proc seq)))
----------------------------------------------------------
(define (prime-sum? pair)
(prime? (+ (car pair) (cadr pair))))
----------------------------------------------------------
(define (make-pair-sum pair)
(list (car pair) (cadr pair)
(+ (car pair) (cadr pair))))