ある間隔内で定義される 3 種類の数値範囲が
あり
ます
。 1、3、7など)
それらを結合/交差させ(異なるタイプの2からNまで)、最適化された結果を得る必要があります。明らかに、上記の交差は上記のタイプのいずれかの結果を返し、それらを結合すると上記のタイプの 1 から M の範囲になります。
例 1:
1 番目の範囲は 5 から 11 までの連続した範囲として定義され、2 番目の範囲は 2 から 18 までのステップ 2 (したがって 8 ステップ) の周期的なシーケンスとして定義されます。
Intersection は、ステップ 2 で 6 から 10 までの周期的シーケンスを
返します。Union は、ステップ 2 で 2 から 4 までの周期的シーケンス、ステップ 2 で 5 から 11 までの連続範囲、およびステップ 2 で 12 から 18 までの周期的シーケンスの 3 つの結果を返します。
例 2:
1 番目の範囲はステップ 2 の周期シーケンス 0 から 10 として定義され、2 番目はステップ 2 の 1 から 7 の周期シーケンス (したがって 3 ステップ) として定義されます。
交差は交差しないため、null を返します。
Union は 2 つの結果を返します: ステップ 1 を含む 1 から 8 までの周期的なシーケンス (注: 最適化された結果) と正確な値
10
.
ここのようなもののためのライブラリがあることを願っています。アドバイスをお願いします (C#.NET で使用します)。
ありがとう!
更新
「ライブラリをどのように使用すると思いますか」への回答。上記の 3 つのタイプはすべて、プログラミング言語で次のように簡単に定義できます
。10 進数の終了。ここで、Start は範囲の始まりで、End は終わり
です。10 進ステップ; int カウント; ここで、Start はシーケンスの開始、Step はインクリメント、Count はステップ カウント
3 です。正確な数値のセット: { decimal[] Values; ここで、Values はいくつかの 10 進数の配列です。
上記の任意のタイプの任意の 2 つの範囲の交差を作成すると、そのタイプのいずれかの結果が確実に得られます。また、「正確なセット」は、正確な「連続」のセットになります。また、「exact」は正確も返します。同じタイプの交差は、入力タイプの結果を返します。
2 つの範囲の結合はもう少し複雑ですが、上記の型で定義された 2 ~ 3 つの範囲も返します。
交差/結合関数を使用すると、常に2からNの範囲で実行でき、入力タイプの用語で結果を取得できます。