Задание
Напишите программу или функцию, чьи входные данные представляют собой список / массив X целых чисел, а выходные данные представляют собой список наборов целых чисел Y , так что для каждого элемента e в каждом наборе Y [ i ], 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}]
Разъяснения
- Вы можете представлять набор в виде списка, если хотите. Если вы это сделаете, порядок элементов не имеет значения, но вы не можете повторять элементы.
- Вы можете использовать любой разумный однозначный формат ввода / вывода; Например, вы можете разделить элементы набора пробелами, а сами наборы - символом новой строки.
- 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]
?