Учитывая целочисленную матрицу a
и неотрицательное целое число i
, выведите отображение, b
которое отображает различные значения в i
столбце th a
на строки a
, имеющие это значение в i
столбце th.
Вы можете предположить, что он i
находится в полуоткрытом диапазоне [0, num_cols(a))
(или [1, num_cols(a)]
если вы решите использовать индексы на основе 1), и что все целые числа находятся в пределах представимого диапазона для вашего языка. Ввод и вывод могут быть выполнены любым разумным способом, при условии, что он удовлетворяет основным требованиям задачи (2D-массив -> отображение из целых чисел в двумерные массивы целых). До тех пор, пока отображение ясное и последовательное, ключи не нужно включать в вывод.
Примеры
[[1]], 0 -> {1: [[1]]}
[[3, 4, 5], [1, 4, 2], [5, 5, 5], [7, 7, 7], [1, 5, 9]], 1 -> {4: [[3, 4, 5], [1, 4, 2]], 5: [[5, 5, 5], [1, 5, 9]], 7: [[7, 7, 7]]}
[[1, 2, 3, 4, 5], [5, 4, 3, 2, 1], [2, 3, 4, 5, 6], [8, 9, 100, 0, 2]], 4 -> {5: [[1, 2, 3, 4, 5]], 1: [[5, 4, 3, 2, 1]], 6: [[2, 3, 4, 5, 6]], 2: [[8, 9, 100, 0, 2]]}
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Ответы:
Октава , 24 байта
Попробуйте онлайн!
Это создает анонимную функцию, которая возвращает матрицу, строки которой соответствуют критериям. Массивы октавных индексов равны 1, а не нулю, а строки матрицы разделены знаком a
;
.Матрицы - это то, что Octave делает лучше всего - настолько хорошо, что фактически эта задача может быть решена с использованием чистого синтаксиса, без встроенных функций.
объяснение
источник
Рубин , 26 байт
Попробуйте онлайн!
источник
Wolfram Language (Mathematica) , 21 байт
1-индексироваться. Возвращает
Association
сопоставление.Попробуйте онлайн!
Это редкий случай, когда более длинная функция (
Extract
) уменьшает количество байтов (более короткое существоPart
или[[ ... ]]
), потому чтоExtract
может карри. Результат - это чрезвычайно краткое решение с двумя функциями.объяснение
Функция, извлекающая
<second input>
элемент th.Сгруппируйте
<first input>
в списки, связанные с различными ключами<above function>[element]
.источник
Haskell ,
6460 байтПопробуйте онлайн!
источник
Чисто , 40 байт
Попробуйте онлайн!
Лямбда (
:: Int [[Int]] Int -> [[Int]]
), где частичное применение только первых двух аргументов дает отображение на третий аргумент.источник
J , 16 байт
-3 байта благодаря FrownyFrog!
Попробуйте онлайн!
Объяснение:
Диадический глагол, принимающий
i
за левый аргумент иa
за правый.]
это правильный аргумент,a
{"1
находит числа вi
столбце th в каждой строке</.
блокирует группы из правого аргумента, выбираемого клавишами, предоставленными левым~.@[
находит уникальные ключи;"0
связывает ключи с выбранными группамиисточник
;"0
вместо,:
сохранения 3JQ, 100 байт
использует объект для вывода, принимает аргумент командной строки
$f
плюс массив на стандартном вводеdeobfuscated:
источник
R ,
7955 байтовПопробуйте онлайн!
@JayCe сбрил 24 байта
источник
cat(z)
перед печатью, чтобы также распечатать ключ (неясно, требуется ли это).Python 3 , 45 байт
Попробуйте онлайн!
Возвращает отображение, представленное как анонимная лямбда.
источник
Протон , 29 байт
Попробуйте онлайн!
-3 байта благодаря г-ну Xcoder, использующему карри и
filter
(TBH я немного удивлен, чтоfilter
фактически работал)источник
filter
экономят три байта.JavaScript (Node.js) , 29 байт
Попробуйте онлайн!
Обновленный теперь, когда я понимаю свободные требования к продукции. Это использует карри в качестве техники игры в гольф, а также возвращает функцию, которая принимает входные данные
n
и отображает их в соответствующие массивы.источник
Желе , 5 байт
Попробуйте онлайн!
Опускает ключи, но должно быть ясно.
Аргумент 1: я + 1
Аргумент 2: а
источник
Java 10,
13564 байтаВозвращает
Function<Integer, List<int[]>>
принимающий целочисленный вводn
, который возвращает список массивов (строк матрицы), гдеi
'-ые значения равны заданномуn
.Попробуйте онлайн.
Объяснение:
источник