考虑输入数组
[a,b,c,d,e]
和一个 'join' 函数(a,b) => (a+b)
我的代码返回以下数组,包含应用 join 函数到不同元素对的所有可能变化,同时保持顺序:
[
[a,b,c,d,e],
[a,b+c,d,e],
[a,b+c+d,e],
[a,b,c+d,e],
[a+b,c,d,e],
[a+b,c+d,e],
[a+b+c,d,e],
[a+b+c+d,e],
[a,b,c,d+e],
[a,b+c,d+e],
[a,b+c+d+e],
[a,b,c+d+e],
[a+b,c,d+e],
[a+b,c+d+e],
[a+b+c,d+e],
[a+b+c+d+e],
]
在视觉上,我想做的是这样的:
代码可以工作,但我不知道该称呼它什么——如果这个操作已经存在一种名字,我希望使用其他开发人员熟悉的名称。它不是幂集,但它类似于幂集......这种特定的集合/数组操作有一个名字吗?
编辑:好的,它们不是排列;排列都是由不同顺序的5个元素数组组成的[[a,b,c,d,e], [e,d,c,b,a], [a,d,b,c,e], ...]
它们不是划分,因为任何子集只能包含输入中相邻的元素。换句话说,划分将允许这样的操作:
(这可能源于纯集合论没有有序集合的概念。)
它们不是组合,因为输出的每个元素恰好使用输入集的每个成员一次。
我认为myArray.OrderedPartitions((a,b) => (a+b))
可能是一个合适的简洁和解释性的名称。
[a+b+c+d+e]
没有出现? - Landei[ a+b, c+d, e ]
)。 - LSerni1+1+1+1+1 1+1+1+2 1+1+2+1 1+1+3 1+2+1+1 1+2+2 ...
- mbeckish