【发布时间】:2014-12-03 19:08:08
【问题描述】:
在 Clojure 中,我有一个列表
[a, b, c, d]
我想从中提取一个新的无限元组列表
[ [a,b,c], [b,c,d], [c,d,a], [d,a,b], [a,b,c] ... ]
我试图弄清楚如何使用内置的 seq 函数以纯粹的功能方式做到这一点。
这很简单,我还没有破解吗?或者它实际上是某种难题? (在其他语言中,我会编写自己的循环迭代器并跟踪很多状态。)
更新:另外,为什么有人投票反对?
【问题讨论】:
-
我认为投反对票是因为你没有展示你到目前为止所做的事情。
-
(take 5 (partition 3 1 (cycle '(a b c d)))) -
谢谢@Kyle。我不知道 Partition 的三参数版本。
-
@m0skit0 我尝试了很多不同的组合。然后在它们不起作用时将它们扔掉。我假设如果有人知道正确的方法,他们不一定希望或不需要看到我所有失败的尝试。
-
如果我对此投反对票,那将是因为您的标题与您的问题描述完全不符:从惰性序列中获取前 N 个项目的方法只是
take!阅读您的示例输入+输出,我很困惑试图将其与您的解释相协调。