【发布时间】:2015-09-29 14:33:00
【问题描述】:
我正在尝试学习 Erlang 中的递归,并且正在阅读一本书。 但是,当面临获取列表并仅返回重复元素的问题时,我遇到了困难。 我尝试编写一个只返回唯一元素的函数,然后将它们从原始列表中删除。
adjacent_dups(L) -> L -- uniques(L).
uniques([]) -> [];
uniques([H|T]) -> [H | [X || X <- uniques(T), X /= H]].
但是,当列表结构不正确时,这将不会给出正确的结果。
L = [7,3,4,3]
我的代码会返回
adjacent_dups([7,3,4,3]) -> 3
我怎样才能得到
adjacent_dups([7,3,4,3]) -> []
【问题讨论】:
-
这是未指定的:您期望的输出是什么,例如[2,3,3,4,1,1] 结果如何排序。 [6,4,4,4,3,1,1,1,1] 应该发生什么?那么 [1,2,3,3,4,3,3] 呢?
-
这实际上与 Dave Thomas 在去年 ElixirConf 的演讲中提到的问题非常相似。以下是演讲相关部分的链接:youtu.be/5hDVftaPQwY?t=12m18s