小编Mar*_*ost的帖子

Clojure源代码中的Arity重载

这是源代码update-in:

(defn update-in
 ([m [k & ks] f]
   (if ks
    (assoc m k (update-in (get m k) ks f))
    (assoc m k (f (get m k)))))
 ([m [k & ks] f a]
   (if ks
    (assoc m k (update-in (get m k) ks f a))
    (assoc m k (f (get m k) a))))
 ([m [k & ks] f a b]
   (if ks
    (assoc m k (update-in (get m k) ks f a b))
    (assoc m k (f (get m …
Run Code Online (Sandbox Code Playgroud)

clojure

3
推荐指数
1
解决办法
74
查看次数

3Sum在Clojure中使用for

我有这个经典的算法练习:在这个数组中有多少三倍总和为零?在Java中实现这个没问题:

int count = 0;
for (int i = 0; i < array.length - 2; i++) {
  (for int j= i+1; j < array.length -1; j++) {
    (for int k = j + 1; k < array.length; k++) {
      if (array[i] + array[j] + array[k] == 0) {
        count++;
      }
    }
  }
}
return count;
Run Code Online (Sandbox Code Playgroud)

我怎么会在Clojure中这样做呢?我问自己:我怎么能在Clojure中做嵌套循环.

但是这个问题和答案并没有真正解决我的问题,因为它需要两个相同的数组并组合所有元素(也是相同的元素,例如1和1).

相关问题:如何从集合中获取三元组的所有组合?

注意:我们明确要求不对数组进行排序.我知道有更快的算法.

编辑:添加"== 0"条件.

clojure

2
推荐指数
1
解决办法
149
查看次数

标签 统计

clojure ×2