Die Aufgabe
Schreiben Sie ein Programm oder eine Funktion, deren Eingabe eine Liste / ein Array X von Ganzzahlen ist und deren Ausgabe eine Liste von Mengen von Ganzzahlen Y ist , so dass für jedes Element e in jeder Menge Y [ i ], X [ e ] = i und so dass die Gesamtzahl der Elemente in den Mengen in Y der Anzahl der Elemente in X entspricht .
(Dies ist im Grunde derselbe Vorgang wie das Umkehren einer Hash-Tabelle / eines Wörterbuchs, außer dass dies stattdessen auf Arrays angewendet wird.)
Beispiele
In diesen Beispielen wird eine 1-basierte Indizierung vorausgesetzt. Sie können jedoch auch eine 0-basierte Indizierung verwenden, wenn Sie dies vorziehen.
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}]
Klarstellungen
- Wenn Sie möchten, können Sie ein Set als Liste darstellen. In diesem Fall spielt die Reihenfolge der Elemente keine Rolle, Sie können jedoch möglicherweise keine Elemente wiederholen.
- Sie können jedes vernünftige, eindeutige E / A-Format verwenden. Sie können beispielsweise Elemente einer Menge durch Leerzeichen und die Mengen selbst durch Zeilenumbrüche trennen.
- Y sollte endlich lang sein und mindestens so lang, dass alle Elemente von X als Array-Indizes vorliegen. Es kann jedoch länger als das maximale Element von X sein (die zusätzlichen Elemente wären leere Mengen).
- Die Elemente von X sind alle gültige Array-Indizes, dh nicht negative Ganzzahlen, wenn Sie eine 0-basierte Indizierung verwenden, oder positive Ganzzahlen, wenn Sie eine 1-basierte Indizierung verwenden.
Siegbedingung
Als Code-Golf- Herausforderung ist kürzer besser.
[5,5,6,6]
und [6,6,5,5]
identisch sein können?
[5,5,6,6]
und [6,6,5,5]
kann keine identische Ausgabe haben, aber die Ausgabe für [5,5,6,6]
könnte auch zB gewesen sein [{},{},{},{},{2,1},{4,3}]
.
[{0},{0},{0},{0},{1,2},{3,4}]
eine gültige Ausgabe für [5,5,6,6]
?