これは私が立ち往生している宿題の問題です。明示的な再帰またはローカルを使用せずにRacketで関数を作成する必要があります。これは、各ペアの最初の要素が非負の整数であるペアのリストを取り込み、各リストがkであるリストの新しいリストを生成しますk は各ペアの最初の要素です。たとえば、 (expand-pairs (list (list 1 2) (list 3 4))) は (list (list 2) (list 4 4 4)) を生成します
いくつかのコードが機能しましたが、2 番目の要素が数値の場合のみです。質問では2番目の要素がどのタイプの要素であるかを指定していないため、どの要素でも機能する必要があると思います。したがって、私の関数は上記の例を解決できますが、(expand-pairs (list (list 1 'a) (list 3 'b))) を解決できません。
これが私のコードです:
(define (expand-pairs plst)
(map
(lambda (x)
(map
(lambda (y) (+ (first (rest x)) y))
(build-list (first x) (lambda (z) (- z z)))))
plst))
私の主な問題は、再帰またはbuild-listを使用せずに長さkのリストを作成する方法がわからないことですが、build-listを使用すると数値のリストが作成され、それを変換する方法がわかりませんシンボルのリストまたはその他の要素に。
誰かが私を正しい方向に向けることができますか?