c#组合过滤器
本文关键字:过滤器 组合 | 更新日期: 2023-09-27 18:17:40
我有以下代码生成一组数字的所有可能组合。
输入图片描述
此代码生成如下组合{1 2 3 4 5 6},{1 2 3 4 5 7},{1 2 3 4 5 8}.....等
但是我需要应用一些特殊的过滤器。
例如,在任何组合中,第一个数字应该是"偶数",第二个数字应该是"奇数"等。
我想对组合中的所有6个数字应用过滤器。有人能帮忙吗?谢谢。
我想你没有机会接触到《组合学》的源代码。组合方法。所以你只能在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);
}
}
}
}
您可以使用Where
筛选结果
Combinatorics.Combinations(values, 6).Where(c => c.First() % 2 == 0 /* && ..other conditions */)