如何从以下普通代码创建传感器,其中combo
是clojure.math.combinatorics
的别名:
(defn row->evenly-divided [xs]
(->> (combo/combinations (sort-by - xs) 2)
(some (fn [[big small]]
(assert (>= big small))
(let [res (/ big small)]
(when (int? res)
res))))))
如评论中所述,传感器仅适用于处理每个项目。有了这个想法,我通过改变排序使代码更加适合传感器,以便现在为每个项目完成。我不认为可以对组合部分做任何事情!
(defn row->evenly-divided [xs]
(->> (combo/combinations xs 2)
(some (fn [xy]
(let [res (apply / (sort-by - xy))]
(when (int? res)
res))))))
答案 0 :(得分:0)
这是相同的功能,但引入了传感器:
(def x-row->evenly-divided (comp
(map (partial sort-by -))
(map (partial apply /))
(filter int?)))
(defn row->evenly-divided-2 [xs]
(->> (combo/combinations xs 2)
(sequence x-row->evenly-divided)
first))