Clojure:从不同大小的列表中更加惯用的元素配对?

时间:2016-11-24 09:01:16

标签: clojure

我想创建一个来自colspatch的对列表。 cols会有更多元素。 patch中的元素将在配对中重复出现。

例如,

(element-wise-patch '(1 3 5 7 9) '(2 4) '())
([1 2] [3 4] [5 2] [7 4] [9 2])

这是我尝试实现语义。我希望学习更多惯用,更简单的解决方案。

(defn element-wise-patch [cols patch patched]
      (if (<= (count cols) (count patch))
        (concat patched (map vector cols patch))
        (let [[compatible remaining] (split-at (count patch) cols)]
          (element-wise-patch remaining patch (concat patched (map vector compatible patch)))))

我觉得可能已经存在构造来进行这样的修补配对。此外,我的描述可能不足以关联类似的解决方案。

请给我一些指针,或者只是帮助我更清楚地定义我的问题。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:7)

很简单:

(map vector [1 3 5 7 9] (cycle [2 4]))