我在某个区间内定义了三种数值范围,例如:
1.计数范围(指定区间内的任何值)
2.周期性序列(指定序列开始、步数和步数)
3.一组精确值(如1、3、7 等)
我需要联合/相交它们(从 2 到 N 的不同类型)并获得优化的结果。显然,上面的交集将返回上面一种类型的结果,将它们联合起来将产生上面 1 到 M 个类型的范围。
示例 1:
第一个范围定义为从 5 到 11 的连续范围,第二个是从 2 到 18 的周期性序列,步骤 2(因此为 8 个步骤)。
Intersection 将返回一个从 6 到 10 的周期序列,步骤
2。Union 将返回三个结果:一个周期序列从 2 到 4,步骤 2,连续范围从 5 到 11,周期序列从 12 到 18,步骤 2。
示例 2:
第 1 个范围定义为第 2 步的周期序列 0 到 10,第 2 个范围是第 2 步的从 1 到 7 的周期序列(因此,3 步)。
Intersection 将返回 null,因为它们不相交。
Union 将返回两个结果:一个从 1 到 8 的周期性序列,第 1 步(注意:优化结果)和一个精确值 10。
希望我没有犯错 :)
好吧,这些序列上的这些操作不应该太复杂并且我希望这里有一个图书馆。请提供任何建议(将在 C#.NET 中使用)。
谢谢!
更新
回答“我认为我如何使用图书馆”。以上三种类型都可以在编程语言中轻松定义为:
1. Contionous: { decimal Start; 小数结束;} 其中 Start 是范围的开始,End 是结束
2. Periodical: { decimal Start; 小数步长;整数计数;} 其中 Start 是序列的开头, Step 是增量, Count 是步数
3. 精确数字集:{ decimal[] Values; 其中 Values 是一些小数的数组。
当我对上面列出的任何类型的任何两个范围进行交集时,我肯定会得到其中一种类型的结果,例如“连续”和“定期”范围的交集将导致“定期”、“连续”。和“精确的集合”将导致精确的集合,“续”。并且“精确”也将返回精确值。相同类型的交集将返回输入类型的结果。
2 个范围的联合有点复杂,但无论如何也会返回在上述类型中定义的 2 到 3 个范围。
拥有交集/联合功能,我将始终能够在 2 到 N 范围内运行它,并将在输入类型术语中得到结果。