普通代码
问题描述:
创建传感器我怎么会从以下普通代码,其中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))))))
答
这是相同的功能,但具有引入的传感器:
(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))
我认为这是一个有点尴尬适用于此换能器,如果你想将所有'combinations'一步,'sort'步骤和“均分”步骤进入一个过程。要创建组合并对其进行排序,需要遍历整个列表并与其他项目配对。传感器假设每个物品在累积之前都被单独处理。除此之外,国际海事组织,这里的“一些”在性能方面表现完美。 –