我有以下代码生成一组数字的所有可能组合。
此代码生成如下组合{1 2 3 4 5 6},{1 2 3 4 5 7},{1 2 3 4 5 8} .....等
但我需要应用一些特定的过滤器。
例如,在任何组合中,第一个数字应为"偶数",第二个数字应为" ODD"等。
我想对组合中的所有6位数应用过滤器。任何人都可以帮忙。感谢。
答案 0 :(得分:1)
我想您无法访问Combinatorics.Combinations方法的来源。因此,您只能在foreach中制作过滤器
类似的东西:
foreach (int[] combination in Combinatorics.Combinations(values, 6))
{
// first filter
if (combinations[0] % 2 == 0) // first digit should be even
{
// only now should the check be continued (second filter)
if (combinations[1] % 2 != 0) // ... odd
{
// and so on...
if (combinations[2] == someFilter)
{
// you should nest the "ifs" until "combinations[5]" and only
// in the most inner "if" should the number be shown:
string combination = string.format("{{0} {1} {2} {3} {4} {5}}", combinations[0], combinations[1], combinations[2], combinations[3], combinations[4], combinations[5]);
Console.WriteLine(combination);
}
}
}
}
答案 1 :(得分:0)
您可以使用Where
Combinatorics.Combinations(values, 6).Where(c => c.First() % 2 == 0 /* && ..other conditions */)