タスク
入力が整数のリスト/配列Xであり、出力が整数Yのセットのリストであるプログラムまたは関数を記述します。これにより、各セットY [ i ]の各要素eに対して、X [ e ] = i、Yのセットの要素の総数がXの要素の数と等しくなるようにします。
(これは基本的にハッシュテーブル/辞書を逆にするのと同じ操作ですが、代わりに配列に適用されます。)
例
これらの例では1ベースのインデックス付けを想定していますが、必要に応じて0ベースのインデックス付けを代わりに使用できます。
X Y
[4] [{},{},{},{1}]
[1,2,3] [{1},{2},{3}]
[2,2,2] [{},{1,2,3}]
[5,5,6,6] [{},{},{},{},{1,2},{3,4}]
[6,6,5,5] [{},{},{},{},{3,4},{1,2}]
明確化
- 必要に応じて、セットをリストとして表すことができます。その場合、要素の順序は重要ではありませんが、要素を繰り返すことはできません。
- 妥当な明確なI / O形式を使用できます。たとえば、セットの要素をスペースで区切り、セット自体を改行で区切ることができます。
- Yは有限長で、少なくともXのすべての要素を配列インデックスとして持つのに十分な長さでなければなりません。ただし、Xの最大要素よりも長くなる場合があります(余分な要素は空のセットになります)。
- Xの要素はすべて有効な配列インデックスになります。つまり、0ベースのインデックスを使用する場合は負でない整数、1ベースのインデックスを使用する場合は正の整数になります。
勝利条件
コードゴルフの挑戦、短い方が良いです。
[5,5,6,6]
あり[6,6,5,5]
得ることを意味しますか?
[5,5,6,6]
および[6,6,5,5]
同一の出力を持つことはできませんが、のための出力は[5,5,6,6]
、例えば、もあったかもしれません[{},{},{},{},{2,1},{4,3}]
。
[{0},{0},{0},{0},{1,2},{3,4}]
、[5,5,6,6]
?