我有这个功能,可以检查 csv 文件中的城市人口是否超过 500000。 我将所有找到的城市保存到一个向量中,但现在想在向量上循环两次以找到彼此靠近的城市对(小于 500 公里)(我已经有一个检查两个城市是否接近的功能) 这是我目前所拥有的:
(defn closest-city-pairs []
(with-open [rdr (reader)]
(vec
(for [line (drop 1 (line-seq rdr))
:let [y (string/split line #",")]
:when (= true (large(y 0)))]
(let [newVec (conj [] (y 0))]
(for[x newVec
y newVec
:when (= true (close x y))]
(let [newNewVec (conj [] (x y))]
(println newNewVec))))))))
它似乎不想打印,但我的逻辑和所有括号似乎都有意义且井井有条?任何帮助都会很棒
最佳答案
(require '[clojure.math.combinatorics :as comb])
(require '[clojure.data.csv :as csv])
(with-open [r (io/reader "cities.csv")]
(let [cities (->> (csv/read-csv r) (into [] (comp cat (filter large-city?))))]
(filter close-to-each-other? (comb/combinations cities 2))))
关于function - 如何在 Clojure 中对字符串向量进行双重循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58869811/