方案 - 无法返回列表列表
Scheme -Trouble returning a list of lists
此函数应该采用 3 个列表,return 一个列表列表,其中每个输出的子列表包含输入列表的 3 个开始元素。
所以该函数将 return 一个列表 ((1 2 10) (3 4 20) (9 8 30))。
我无法按照我想要的方式生成格式。关于如何解决这个问题有什么想法吗?
enter code here
让我们举几个例子:
; (zip3 '() '() '()) == ()
; (zip3 '(9) '(8) '(30)) == ((9 8 30))
; (zip3 '(3 9) '(4 8) '(20 30)) == ((3 4 20) (9 8 30))
== (cons '(3 4 20) (zip3 '(9) '(8) '(30))
这启发了以下内容:
(define (zip3 xs ys zs)
(cond
[(null? xs) '()]
[else (let ([x (car xs)] [y (car ys)] [z (car zs)]
[xs* (cdr xs)] [ys* (cdr ys)] [zs* (cdr zs)])
(cons (list x y z) (zip3 xs* ys* zs*)))]))
(zip3 '(1 3 9) '(2 4 8) '(10 20 30))
此函数应该采用 3 个列表,return 一个列表列表,其中每个输出的子列表包含输入列表的 3 个开始元素。
所以该函数将 return 一个列表 ((1 2 10) (3 4 20) (9 8 30))。
我无法按照我想要的方式生成格式。关于如何解决这个问题有什么想法吗?
enter code here
让我们举几个例子:
; (zip3 '() '() '()) == ()
; (zip3 '(9) '(8) '(30)) == ((9 8 30))
; (zip3 '(3 9) '(4 8) '(20 30)) == ((3 4 20) (9 8 30))
== (cons '(3 4 20) (zip3 '(9) '(8) '(30))
这启发了以下内容:
(define (zip3 xs ys zs)
(cond
[(null? xs) '()]
[else (let ([x (car xs)] [y (car ys)] [z (car zs)]
[xs* (cdr xs)] [ys* (cdr ys)] [zs* (cdr zs)])
(cons (list x y z) (zip3 xs* ys* zs*)))]))
(zip3 '(1 3 9) '(2 4 8) '(10 20 30))