我正在解决这个问题
我的解决方案是:
(fn [s]
(map #(first %) (group-by identity s)))
前三个测试通过,最后一个失败。
因为
(group-by identity (range 50)
给出无序的结果。但我的解决方案强烈依赖于 group-by 函数的有序特性。也就是说必须保持结果映射中每个键的顺序。这几乎是真的,即使Doc不保证这一点。
真正奇怪的是:
你看,当参数超过 32 个时,分组函数给出错误的顺序。结果不是随机的,而是溢出的元素在第一个元素之后添加。
为什么?
如何保持分组功能的有序功能或有更好的解决方案?