鉴于输入数组这个集合/数组操作有没有名字?
和“加入”功能(a,b) => (a+b)
我的代码返回阵列的以下数组,含有通过将连接功能的各种元素对,同时保持获得的每个可能的变化顺序:
[
[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))
可能是一个适当的简洁和解释性的。
GetPermutations? – KingCronus
为什么'[a + b + c + d + e]'缺失? – Landei
@Landei我的错误:)编辑了这个问题,以包括缺失的排列。 –