■
;;; q2.41 ;;3つの組み合わせを作ります (define (make-trio n) (flatmap (lambda (i) (flatmap (lambda (j) (map (lambda (k) (list k j i)) (enumerate-interval 1 (- j 1)))) (enumerate-interval 1 (- i 1)))) (enumerate-interval 1 n)) ) ;(caddr (list 1 3 4)) ;(make-trio 4);=>おk ;;合計が引数と一致するか? (define (equal-sum-of-3? ans ls) (= ans (accumulate + 0 ls)) ) ;(equal-sum-of-3? 5 (list 1 2 3));=>#f ok ;(equal-sum-of-3? 6(list 1 2 3));=>#t ok ;;3つと合計 (define (make-sum-of-3-sum ls) (list (car ls) (cadr ls) (caddr ls) (+ (car ls) (cadr ls) (caddr ls)) ) ) ;;make-trioでgenてfilterに通した後make-su..で整形した物をmap (define (trio3 n ans) (map make-sum-of-3-sum (filter (lambda (ls) (equal-sum-of-3? ans ls)) (make-trio n) ) ) ) ;;usageとか (trace equal-sum-of-3?) (trace filter) (car(make-trio 6));=>(1 2 3)とか おk (car(cdr(make-trio 6)));=>(1 2 4)とか おk (trio3 8 8) ;;; q2.42 問題読むのがめんどい=>逃亡 ;;; q2.43 問題を読むのがめんどい=>逃亡
あああああああああ