【发布时间】:2020-05-08 11:41:55
【问题描述】:
我想编写一个具有以下行为的 clojure 函数:
(take 4 (floyd))
=> '((1) (2 3) (4 5 6) (7 8 9 10))
(take 3 (floyd))
=> '((1) (2 3) (4 5 6))
(take 1 (floyd))
=> '((1)))
我尝试使用partition 和partition-all 来验证这些测试,但是我找不到正确的解决方案。如果您对如何做有任何想法,我将非常感谢您的帮助。几周前我开始使用 clojure,但仍有一些问题。
谢谢
【问题讨论】:
-
您尝试过递归解决方案吗?请在此处发布您的尝试
-
请添加您尝试过的代码以及失败的原因(例如错误、堆栈跟踪、日志等),以便我们对其进行改进。
-
我试过``` (defn f ([] (f (range))) ([s] (lazy-seq (cons (partition (take (first s) s) s) (f (drop (first s) s)))))```
标签: clojure declarative