Zadanie
Napisz program lub funkcję, której wejściem jest lista / tablica X liczb całkowitych, a wyjściem jest lista zbiorów liczb całkowitych Y , takich, że dla każdego elementu e w każdym zestawie Y [ i ], X [ e ] = i , i tak, aby całkowita liczba elementów w zestawach w Y jest równa liczbie elementów X .
(Jest to w zasadzie ta sama operacja, co odwracanie tablicy hashującej / słownika, z tą różnicą, że stosuje się ją zamiast tablic).
Przykłady
W tych przykładach założono indeksowanie na podstawie 1, ale zamiast tego można użyć indeksowania na podstawie 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}]
Wyjaśnienia
- Możesz reprezentować zestaw jako listę, jeśli chcesz. Jeśli to zrobisz, kolejność jego elementów nie ma znaczenia, ale nie możesz powtarzać elementów.
- Możesz użyć dowolnego rozsądnego jednoznacznego formatu We / Wy; na przykład, możesz oddzielić elementy zestawu spacjami, a same zestawy nowymi liniami.
- Y powinno być skończone i co najmniej wystarczająco długie, aby mieć wszystkie elementy X jako indeksy tablic. Może jednak być dłuższy niż maksymalny element X (dodatkowymi elementami byłyby puste zestawy).
- Wszystkie elementy X będą poprawnymi indeksami tablicowymi, tj. Nieujemnymi liczbami całkowitymi, jeśli użyjesz indeksowania opartego na 0, lub dodatnimi liczbami całkowitymi, jeśli użyjesz indeksowania opartego na 1.
Warunek zwycięstwa
Jako wyzwanie dla golfa kodowanego krótszy jest lepszy.
[5,5,6,6]
i [6,6,5,5]
mogą być identyczne?
[5,5,6,6]
i [6,6,5,5]
nie może mieć identycznego wyniku, ale wyjściem [5,5,6,6]
mogło być również np [{},{},{},{},{2,1},{4,3}]
.
[{0},{0},{0},{0},{1,2},{3,4}]
prawidłowe wyjście [5,5,6,6]
?