将列表解压缩到球拍中的两个单独列表中

时间:2012-10-03 05:47:15

标签: scheme racket

我正在尝试编写一个名为unzip的函数,它接受一个列表并计算一个包含原始列表的交替元素的两个列表的列表。

到目前为止,这就是我所拥有的:

(define (unzip lst)
    (if (null? lst)
        '()
        (...

这是它应该如何运作的:

(解压'(1 a 2 b 3 c))应评估为((1 2 3)(a b c))

1 个答案:

答案 0 :(得分:1)

你所拥有的是错误的轨道,对不起。 (如果给出一个空输入,请考虑结果应该是什么。)类似于我对上一个问题的回答,这是一个骨架解决方案:

(define (unzip l)
  (if (null? l) ???
      (let ([next (unzip ???)])
        (list (cons ??? ???) ???))))

适当填写???。 (是的,我的解决方案经过测试,适用于奇数和偶数输入。)