Clojure 递归地将序列与自身组合,不重复
这很难解释,但很容易表现出来。我不知道为什么我自己还没有弄明白,所以我肯定在clojure中遗漏了一些显而易见的东西 我需要把一个向量和它自身结合成一个向量,我需要把第一个元素和所有剩余的元素结合起来,然后把第二个元素和所有剩余的元素结合起来(第三个和之后) 举个简单的例子: [1 2 3 4 5] 我需要一个函数来获取: [12][13][14][15][23][24][25][34][35] 如果这看起来像是一个大矩阵的一半对,那么你是对的。我只想解矩阵减去中间对角线的一半。这是我唯一需要顺序的部分(所以我只解了一半),其余部分我想使用reducers库来并行化背景中较重的数学Clojure 递归地将序列与自身组合,不重复,clojure,Clojure,这很难解释,但很容易表现出来。我不知道为什么我自己还没有弄明白,所以我肯定在clojure中遗漏了一些显而易见的东西 我需要把一个向量和它自身结合成一个向量,我需要把第一个元素和所有剩余的元素结合起来,然后把第二个元素和所有剩余的元素结合起来(第三个和之后) 举个简单的例子: [1 2 3 4 5] 我需要一个函数来获取: [12][13][14][15][23][24][25][34][35] 如果这看起来像是一个大矩阵的一半对,那么你是对的。我只想解矩阵减去中间对角线的一半。这是我唯一需要顺
提前谢谢 clojure/math.Combinatics中内置了您想要的: 您正在寻找的基本示例在自述文件中,但为了完整地回答这个问题,我将在这里重复:
(ns example.core
(:require [clojure.math.combinatorics :as combo]))
(combo/combinations [1 2 3] 2)
;;=> ((1 2) (1 3) (2 3))
clojure/math.Combinatics中内置了您想要的内容: 您正在寻找的基本示例在自述文件中,但为了完整地回答这个问题,我将在这里重复:
(ns example.core
(:require [clojure.math.combinatorics :as combo]))
(combo/combinations [1 2 3] 2)
;;=> ((1 2) (1 3) (2 3))
我只想用
表示:
(for [ i (range 1 6) j (range 6) :when (< i j)] [i j])
; => ([1 2] [1 3] [1 4] [1 5] [2 3] [2 4] [2 5] [3 4] [3 5] [4 5])
(对于[i(范围16)j(范围6):何时( ([1 2] [1 3] [1 4] [1 5] [2 3] [2 4] [2 5] [3 4] [3 5] [4 5])
我只想用表示
:
(for [ i (range 1 6) j (range 6) :when (< i j)] [i j])
; => ([1 2] [1 3] [1 4] [1 5] [2 3] [2 4] [2 5] [3 4] [3 5] [4 5])
(对于[i(范围16)j(范围6):何时( ([1 2] [1 3] [1 4] [1 5] [2 3] [2 4] [2 5] [3 4] [3 5] [4 5])
您是否故意错过了结果中的[4 5]
?我一定是错过了,很抱歉!我认为在示例中使用数字是一个错误,因为我正在处理的序列是数字向量,我认为事情变得混乱了。我本想让它成为一个更抽象的例子,而不是它最终的样子。你是不是故意错过了结果中的[4 5]
?我一定是错过了,很抱歉!我认为在示例中使用数字是一个错误,因为我正在处理的序列是数字向量,我认为事情变得混乱了。我想让它成为一个更抽象的例子,而不是它最终的样子。谢谢,我以前尝试过这个库,但遇到了一个错误。我认为这是因为我的序列是非数字的,但显然它确实适用于非数字的序列,我只是错过了2作为第二个参数。为什么我们需要一个组合数学库来完成这样一个简单的任务?谢谢,我以前试过这个库,但遇到了一个错误。我认为这是因为我的序列是非数字的,但显然它确实适用于非数字的序列,我只是错过了2作为第二个参数。为什么我们需要一个组合数学库来完成这样一个简单的任务?