Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 当需要访问索引时,存储和操作2D数据的惯用方法_Clojure - Fatal编程技术网

Clojure 当需要访问索引时,存储和操作2D数据的惯用方法

Clojure 当需要访问索引时,存储和操作2D数据的惯用方法,clojure,Clojure,我正在研究代码2018的出现,其中我需要存储位置的2D地图,然后根据它们的坐标对它们进行映射+过滤。我在考虑将位置存储在2D向量中,这样向量的索引就表示了它们的坐标,因为这是我在命令式语言中应该做的 但是,大多数序列操作仅将元素传递给函数,因此无法从传递给的函数(例如,map)访问元素的索引。是的,map-indexed存在,但每次对数据进行操作时,对其进行两次嵌套调用感觉不是很干净 我看到一些人建议存储索引,或者在本例中是(x,y)坐标对,向量中的元素:[[0,0]“loc1”][[0,1]“

我正在研究代码2018的出现,其中我需要存储位置的2D地图,然后根据它们的坐标对它们进行映射+过滤。我在考虑将位置存储在2D向量中,这样向量的索引就表示了它们的坐标,因为这是我在命令式语言中应该做的

但是,大多数序列操作仅将元素传递给函数,因此无法从传递给的函数(例如,
map
)访问元素的索引。是的,
map-indexed
存在,但每次对数据进行操作时,对其进行两次嵌套调用感觉不是很干净

我看到一些人建议存储索引,或者在本例中是(x,y)坐标对,向量中的元素:
[[0,0]“loc1”][[0,1]“loc2”…]
。这会比使用嵌套的
映射索引调用更好吗?或者,除了存储二维数据并使用其索引访问数据之外,还有更干净、更惯用的替代方法吗?

您可以使用:


对于这个特定的问题,问题的2D性质实际上并不重要。因此,我建议将点存储为地图向量,如下所示:

{:x x
 :y y
 :nearest-point :A}
地点包括:

{:x x
 :y y
 :name :A}
比如说。对于每个点,在位置上循环并保存最近的位置。然后,扔掉那些无限的:

(remove #(is-it-infinite? %) points)
然后

计算每个组的大小以得到最终答案

(remove #(is-it-infinite? %) points)
(group-by :nearest-point points)