编号出现在列表中

时间:2018-02-27 04:24:17

标签: scheme

这是该计划必须做的一个例子:

(count ‘(1 2 3 4 5 6)) => (1 1 1 1 1 1)

(count ‘(6 8 3 6 6 1)) => (1 0 1 0 0 3 0 1)

输入列表中每次出现的数字都必须在输出列表的相应索引中计算。

你能帮我找到解决方案吗?

1 个答案:

答案 0 :(得分:0)

以下是build-listfoldr的简单解决方案示例:

(define (count l)
  (build-list (apply max l)
              (lambda (i)
                (foldr (lambda (x y) (if (= x (+ i 1)) (+ y 1) y)) 0 l))))
(count '(6 8 3 6 6 1)) ;==> (1 0 1 0 0 3 0 1)