我想创建一个来自cols
和patch
的对列表。 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)))))
我觉得可能已经存在构造来进行这样的修补配对。此外,我的描述可能不足以关联类似的解决方案。
请给我一些指针,或者只是帮助我更清楚地定义我的问题。
提前感谢您的帮助!
答案 0 :(得分:7)
很简单:
(map vector [1 3 5 7 9] (cycle [2 4]))