如何在方案中制作两个列表,一个是偶数,一个是奇数?

时间:2014-05-09 18:06:50

标签: scheme

我有一个问题。

例如:

我们有一个未排序的列表:

(1 4 5 3 6 7)

你能帮我制作 2个列表吗?

一个奇数,增加列表:

(1 3 5 7)

和其他偶数,递减列表:

(6 4)

不要使用sort!

1 个答案:

答案 0 :(得分:1)

(define (split filter lst)
  (let loop ((a '()) (b  '()) (lst lst))
    (if (null? lst)
        (values a b)
        (let ((cur (car lst)))
          (if (filter cur)
              (loop (cons cur a) b (cdr lst))
              (loop a (cons cur b) (cdr lst)))))))

(split odd? '(1 2 3 4 5 6 7 8 9 10))
; ==> (9 7 5 3 1), (10 8 6 4 2)

现在,制作一个将赔率与平均值和特定顺序区分开来的方法很简单。