LISP Scheme Part7
■ このスレッドは過去ログ倉庫に格納されています
0759デフォルトの名無しさん
NGNGもうちょっと一般化して、
(define (test s)
(let loop ((r '()) (s s))
(if (and (pair? s) (pair? (cdr s)))
(apply append
(map
(lambda (x) (loop (cons x r) (cdr s)))
(car s)))
(if (pair? s)
(map (lambda(z) (reverse (cons z r))) (car s))
s))))
>(test '((a b c ) (d e f) (g h i) (j k l)))
=>((a d g j) (a d g k) (a d g l) (a d h j) (a d h k) (a d h l) (a d i j) (a d i
k) (a d i l) (a e g j) (a e g k) (a e g l) (a e h j) (a e h k) (a e h l) (a e i
j) (a e i k) (a e i l) (a f g j) (a f g k) (a f g l) (a f h j) (a f h k) (a f h
l) (a f i j) (a f i k) (a f i l) (b d g j) (b d g k) (b d g l) (b d h j) (b d h
k) (b d h l) (b d i j) (b d i k) (b d i l) (b e g j) (b e g k) (b e g l) (b e h
j) (b e h k) (b e h l) (b e i j) (b e i k) (b e i l) (b f g j) (b f g k) (b f g
l) (b f h j) (b f h k) (b f h l) (b f i j) (b f i k) (b f i l) (c d g j) (c d g
k) (c d g l) (c d h j) (c d h k) (c d h l) (c d i j) (c d i k) (c d i l) (c e g
j) (c e g k) (c e g l) (c e h j) (c e h k) (c e h l) (c e i j) (c e i k) (c e i
l) (c f g j) (c f g k) (c f g l) (c f h j) (c f h k) (c f h l) (c f i j) (c f i
k) (c f i l))
なんてどうかな。
■ このスレッドは過去ログ倉庫に格納されています