PPCGコミュニティのおかげで、サンタはプレゼントを運送ドックに移動するための正しい順序に整理することができました。残念ながら、運送用ドックの看板は壊れているので、プレゼントをどこに置くかわからないのです!プレゼントはすべて一緒にグループ化されており、その範囲ではなく、サンタがより良いアイデアだったと認めています。
次に、ソートされた順序でプレゼントが与えられた場合、現在が正しい順序になるようなすべての可能な最小範囲構成を決定します。つまり、チャレンジ#5のアルゴリズムに従ってプレゼントを並べ替えても順序が変わらないように、すべての最小範囲構成を見つけます。
チャレンジ
最小範囲構成は、範囲がそれぞれ可能な限り小さい範囲のリストです。つまり、プレゼントの特定のサブセットをカバーするように範囲が指定されている場合、範囲の最小値と最大値はサブセットの最小値と最大値と同じでなければなりません。つまり、カバーの範囲を縮小すると、カバーではなくなります。
課題は、現在のサイズに適用できるすべての可能な最小範囲構成を見つけることです。例を見てみましょう:[3, 1, 2, 5, 4, 7, 6]
現在の構成全体の範囲をとることは、些細な場合です。この場合、[[1, 7]]
解決策になります。
一意の要素を持つ例の場合、別の些細なケースになります[[3], [1], [2], [5], [4], [7], [6]]
(範囲を順序付ける必要がないため)。
この例では、我々はまた、それを見る[[1, 3], [4, 7]]
と[[1, 3], [4, 5], [6, 7]]
同様に、働くだろう[[1, 3], [5], [4], [6, 7]]
と[[1, 3], [4, 5], [7], [6]]
。
の最終的な答えは[3, 1, 2, 5, 4, 7, 6]
でしょう[[[3], [1], [2], [5], [4], [7], [6]], [[3], [1], [2], [5], [4], [6, 7]], [[3], [1], [2], [4, 5], [7], [6]], [[3], [1], [2], [4, 5], [6, 7]], [[3], [1], [2], [4, 7]], [[3], [1, 2], [5], [4], [7], [6]], [[3], [1, 2], [5], [4], [6, 7]], [[3], [1, 2], [4, 5], [7], [6]], [[3], [1, 2], [4, 5], [6, 7]], [[3], [1, 2], [4, 7]], [[1, 3], [5], [4], [7], [6]], [[1, 3], [5], [4], [6, 7]], [[1, 3], [4, 5], [7], [6]], [[1, 3], [4, 5], [6, 7]], [[1, 3], [4, 7]], [[1, 5], [7], [6]], [[1, 5], [6, 7]], [[1, 7]]]
。
フォーマット仕様
入力は、言語の適切なサポートされている数値範囲内の任意の適切な形式の正の整数のフラットリストとして提供されます。入力に重複した要素が含まれている可能性があります。出力は、適切な形式の正の整数の3Dリストとして提供する必要があります。
(第2層である)あなたの出力の各範囲は、としてのいずれかで表すことができ[min, max]
、[num]
それは単一値の範囲です、または全範囲自体が、あなたの出力形式として一貫していなければならない場合。少し異なる合理的な出力形式を使用するかどうかを指定してください。
重複する値は、出力の単一の範囲でカバーされる必要があります。つまり、出力の2つの範囲がオーバーラップすることはありません。
ソリューションは範囲を任意の順序で返す可能性があり、これは確定的である必要はありません。
ルール
- 標準抜け穴が適用されます
- これはコードゴルフなので、バイト単位の最も短い答えが勝ちます
- 回答は受け付けられません
重複する要素を含むリストのテストケース:
2 3 2 4 -> [[[2, 3], [4]], [[2, 4]]]
リファレンス実装
ヘッダーはリンクです。
注:このチャレンジシリーズは、Advent Of Codeからインスピレーションを得ました。このサイトとは関係ありません
こちらの最初のチャレンジの「リンクされた」セクションを見ると、シリーズのすべてのチャレンジのリストを確認できます。
幸せなゴルフ!