- ベストアンサー
schemeのプログラムについて
schemeで同じ長さの2つのリストの要素を交互に並べる関数はどのように書くのでしょうか? 例えば、関数名をabcとして、 (abc '(1 3 5 7 9) '(2 4 6 8 10)) と入力すると (1 2 3 4 5 6 7 8 9 10) のように表示されます
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
例えばこんな感じですか? (define (abc ls0 ls1) (let loop ((ls0 ls0) (ls1 ls1) (acc '())) (if (= (length ls0) (length ls1)) (if (null? ls0) (reverse acc) (let ((a (car ls0)) (b (car ls1))) (loop (cdr ls0) (cdr ls1) (if (> a b) (cons a (cons b acc)) (cons b (cons a acc)))))) (error "リストの長さが違います: " ls0 ls1)))) ;; 実行例 > (abc '(1 3 5 7 9) '(2 4 6 8 10)) '(1 2 3 4 5 6 7 8 9 10) > (abc '(1 3 5) '(2 4)) . . リストの長さが違います: (1 3 5) (2 4) >
お礼
ありがとうございます!