- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要遍历一个列表并对每个元素和不包括该元素的元素进行一些计算。例如,有一个列表 (1 2 3 1)
,我需要对 (1) (2 3 1)
, (2) (1 3 1)
、(3) (1 2 1)
和 (1) (2 3 1)
。
最佳答案
(...) with every element and the elements excluding that element.
每个元素听起来都像一个 map
。 排除该元素听起来像一个过滤器
。让我们从后者开始。
user=> (filter #(not= % 1) '(1 2 3))
(2 3)
太棒了。现在让我们尝试将其映射到所有元素。
user=> (let [coll '(1 2 3)] (map (fn [elem] (filter #(not= % elem) coll)) coll))
((2 3) (1 3) (1 2))
创建实际的配对留给读者作为练习。提示:修改map
中使用的闭包。
请记住,上面建议的解决方案对于短列表应该可以正常工作,但其复杂度为 O(n²)。另一个问题是无法正确处理具有重复项的集合。
让我们采用递归方法。我们将基于 loop
和 recur
进行递归。
(defn pairs [coll]
(loop [ahead coll behind [] answer []]
(if (empty? ahead)
answer
(let [[current & remaining] ahead]
(recur remaining
(conj behind current)
(conj answer [(list current)
(concat behind remaining)]))))))
一个简单的例子:
user=> (pairs '(1 2 3))
[[(1) (2 3)] [(2) (1 3)] [(3) (1 2)]]
具有重复项的向量:
user=> (pairs [1 5 6 5])
[[(1) (5 6 5)] [(5) (1 6 5)] [(6) (1 5 5)] [(5) (1 5 6)]]
关于clojure - 需要一个与 disj 类似的函数,但用于 clojure 中的列表。总体来说可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13605768/
在 Isar 风格的 Isabelle 证明中,这很有效: from `a ∨ b` have foo proof assume a show foo sorry next assume
嗨,我在尝试从集合中删除元素时遇到了困难。 我有一张卡片 map 。 (def cards { :card1 {:name "Wisp" :type "Mo
据我所知,Clojure 的核心功能几乎总是适用于不同类型的集合,例如conj , first , rest等。我有点疑惑为什么disj和 dissoc虽然不同;它们具有完全相同的签名: (disso
我需要遍历一个列表并对每个元素和不包括该元素的元素进行一些计算。例如,有一个列表 (1 2 3 1),我需要对 (1) (2 3 1), (2) (1 3 1) 、(3) (1 2 1) 和 (1)
有没有办法只从 ClojureQL 的 disj 生成 sql 查询!连接!和更新!函数,而不是直接执行它们? 最佳答案 不,这些方法是直接执行各自准备好的语句。它们都很基础。对于 conj!和 up
我是一名优秀的程序员,十分优秀!