从普通代码

时间:2017-12-03 05:54:22

标签: clojure

如何从以下普通代码创建传感器,其中comboclojure.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))))))

1 个答案:

答案 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))