【发布时间】:2016-06-23 21:56:59
【问题描述】:
(排列'(0 1 1 2 3 3 4 5 6 6)) -> '(0 (1 1) 2 (3 3) 4 5 (6 6))
你好,我想做这个。 他们应该这样做,相同的下一个元素进入列表列表,其他元素进入普通列表。但我不知道如何使用 foldr 和 lambda 获取下一个元素。
我的代码:
(define (arrange l)
(foldr (lambda (e1 e2 acc)
(cons (if (= e1 e2)(list e1 e2) e1) acc))
'()
l l))
e2 不要看下一个元素,它们就像 e1。
【问题讨论】:
-
输入总是排序的吗?或者可以是
(1 2 1 3 2 4 1)给((1 1 1) (2 2) 3 4)?编辑:此外,输出必须是相同的顺序,还是只是增加? -
输入已排序,输出必须相同。