普通代码

普通代码

问题描述:

创建传感器我怎么会从以下普通代码,其中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

我认为这是一个有点尴尬适用于此换能器,如果你想将所有'combinations'一步,'sort'步骤和“均分”步骤进入一个过程。要创建组合并对其进行排序,需要遍历整个列表并与其他项目配对。传感器假设每个物品在累积之前都被单独处理。除此之外,国际海事组织,这里的“一些”在性能方面表现完美。 –

这是相同的功能,但具有引入的传感器:

(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))