包含混合向量和双精度的向量的 Clojure 减少函数
Posted
技术标签:
【中文标题】包含混合向量和双精度的向量的 Clojure 减少函数【英文标题】:Clojure reduce function for vector containing mixture vectors and doubles 【发布时间】:2019-03-20 12:05:10 【问题描述】:我想求和一个包含双精度和向量混合的向量。有点像,
[[1 2 1 [1 2 3]] [1 2 4 [1 1 1]]...]
我想总结一下,我得到类似的东西,
[212 12 444 [11 2 12]]
有没有一种有效的方法来使用核心 clojure 函数(如 reduce 或 map)来做到这一点?
【问题讨论】:
你是如何从[1 2 1 [1 2 3]]
到212
的?
顺便说一句,确保你read this
请添加您已经尝试过的代码。由于该示例已经有些不清楚,因此如果您编写一些测试用例,它确实会有所帮助。结合您的尝试,我们会遇到一个失败的场景,并且可以从那里改进。
【参考方案1】:
我认为您想要一个添加嵌套向量结构的函数,以便(nvadd [1 2 1 [1 2 3]] [1 2 4 [1 1 1]])
的计算结果为[2 4 5 [2 3 4]]
。然后,您可以使用该函数 reduce
您的此类向量的向量。
(defn nvadd [a b]
(mapv #(if (vector? %1)
(nvadd %1 %2)
(+ %1 %2))
a b))
这假设输入格式正确。
【讨论】:
这比我想出的解决方案要巧妙得多,谢谢!以上是关于包含混合向量和双精度的向量的 Clojure 减少函数的主要内容,如果未能解决你的问题,请参考以下文章