したがって、これはトリッキーなものです。多少単純化されていますが、メモリの最適化に関する現実世界の問題に基づいています (宿題ではありません)。
2 つの日付の間の期間であるとします (2013 年 1 月 1 日から 2013 年 1 月 31 日など)。これで、それぞれが日付と色を含む一連の日付エントリが与えられます。日付ごとに最大 1 つのエントリがありますが、すべての日付にエントリがない場合があります。
例えば:
2013-01-01 イエロー
2013-01-02 ブルー
2013-01-03 赤
2013-01-05 イエロー
など
ここで、開始日と終了日、色を含むスパンがあるとします。オプションの曜日フィルターもあり、宣言されている場合は、1 つまたは複数の曜日を含めることができます。そのような場合、スパンはその日だけ「アクティブ」になります。
たとえば、以下の例では次のようになります。
スパン #1: 2013-01-01 - 2013-01-06 青
スパン #2: 2013-01-13 - 2013-01-27 RED 月
スパン #3: 2013-01-08 - 2013-01-26 CYAN 水 火 土 日
など
問題は、実行可能なアルゴリズムを考え出すことです (パフォーマンス、メモリの観点から、および量子コンピューターを使用しない場合:) 与えられた期間を説明する最小量のスパンを考え出す (保証された最小量を持たない)ただし、それがいいとしても:)。スパンが重複する場合があります。
ブルートフォーシングはかなり厄介なように見えますが、エレガントな解決策があるはずです