将Clojure中的向量向量映射到散列向量
我在2D空间中有一个点向量,例如:将Clojure中的向量向量映射到散列向量,clojure,functional-programming,Clojure,Functional Programming,我在2D空间中有一个点向量,例如: [[0 0] [1 1] [2 2]] 需要计算向量中某个点和每个点之间的距离,以确定向量中哪个点离我要查询的点最近。我需要知道距离和最近点,所以我想要一个散列向量,如下所示: [{:point [0 0] :dist 2.7} {:point [1 1] :dist 3.5} {:point [2 2] :dist 4.3}] (defn closest-point [point all-points] (map #({:point % :dis
[[0 0] [1 1] [2 2]]
需要计算向量中某个点和每个点之间的距离,以确定向量中哪个点离我要查询的点最近。我需要知道距离和最近点,所以我想要一个散列向量,如下所示:
[{:point [0 0] :dist 2.7} {:point [1 1] :dist 3.5} {:point [2 2] :dist 4.3}]
(defn closest-point [point all-points]
(map #({:point % :dist (distance point %)}) all-points))
如何将前者转换为后者?我试过这样的方法:
[{:point [0 0] :dist 2.7} {:point [1 1] :dist 3.5} {:point [2 2] :dist 4.3}]
(defn closest-point [point all-points]
(map #({:point % :dist (distance point %)}) all-points))
但我有一个错误:
(user=> ArityException Wrong number of args (0) passed to: PersistentArrayMap clojure.lang.AFn.throwArity (AFn.java:437)
{…}扩展为fn[]{…},它尝试在没有任何参数的情况下调用映射
试试这个:
(defn closest-point [point all-points]
(map (fn [p] {:point p :dist (distance point p)}) all-points))
或
或
{…}扩展为fn[]{…},它尝试在没有任何参数的情况下调用映射
试试这个:
(defn closest-point [point all-points]
(map (fn [p] {:point p :dist (distance point p)}) all-points))
或
或
结果:-
({:point [0 0], :dist 2.7} {:point [1 1], :dist 3.5} {:point [2 2], :dist 4})
结果:-
({:point [0 0], :dist 2.7} {:point [1 1], :dist 3.5} {:point [2 2], :dist 4})
如果您使用地图而不是地图来进行理解,则更易于阅读。此外,要实际选择最近的点,只需使用“最小关键点”:
如果您使用地图而不是地图来进行理解,则更易于阅读。此外,要实际选择最近的点,只需使用“最小关键点”:
如果不从代码中删除任何内容,只添加一个单词:identity,就可以修复它呢
如果不从代码中删除任何内容,只添加一个单词:identity,就可以修复它呢
乔斯特,谢谢。我有一个复制粘贴错误,它忽略了散列的周围,我现在在问题中修复了这个错误。您的第二个解决方案非常有效!如果你删除开头的段落和第一个不起作用的例子,我会接受你的回答。Joost,谢谢。我有一个复制粘贴错误,它忽略了散列的周围,我现在在问题中修复了这个错误。您的第二个解决方案非常有效!如果你删除开头的段落和第一个不起作用的例子,我会接受你的答案。
(defn closest-point [point all-points]
(map #(identity {:point % :dist (distance point %)}) all-points))