Вам дан квадрат матрицы и список (или вектор) длины содержащий числа от до (или от до ). Ваша задача - изменить порядок столбцов и строк матрицы в порядке, указанном в .
То есть, вы построить матрицу , где -й элемент является -й элемент . Вы также должны вывести обратное действие; то есть, (I, J) -й элемент будет в конечном итоге в положении в новых матрицах .
Например, если
выходные данные должны быть
Вы можете осуществлять ввод и вывод через любой из методов ввода / вывода по умолчанию. Вам не нужно указывать, какая матрица или , если вы выводите обе. Вы можете предполагать, что содержит только положительные целые числа, и вы можете использовать индексацию на основе 1 или 0 для . Вы должны поддерживать матрицы размером не менее .
пример
===== Input =====
A =
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
u=
3 5 6 1 4 2
==== Output =====
B =
2 27 20 31 22 9
34 14 16 30 12 5
29 18 11 4 13 36
6 19 24 35 26 1
33 10 15 8 17 28
7 23 25 3 21 32
C =
17 15 8 10 28 33
13 11 4 18 36 29
26 24 35 19 1 6
12 16 30 14 5 34
21 25 3 23 32 7
22 20 31 27 9 2
code-golf
matrix
linear-algebra
Sanchises
источник
источник
0
качестве разделителя?u = [2, 0, 1]
?Ответы:
R , 42 байта
Попробуйте онлайн!
Принимает
A
какmatrix
основанные на 1 и 1 индексыo
.источник
MATL ,
1513 байтВходы
u
, затемA
.Выходы-
B
тоC
без разделителя, так как двусмысленности нет.Попробуйте онлайн!
объяснение
источник
Октава , 33 байта
Попробуйте онлайн!
Спасибо Луису за исправление ошибки и сохранение нескольких байтов!
Базовое индексирование работает здесь для обеих задач, определяя векторv равный перестановке, которая отменяет U . То есть, если и = ( 3 , 1 , 2 ) то первый элемент v равен 2, поскольку 1 находится во второй позиции U . Это достигается с помощью функции сортировки Octave .
источник
Python 3 с NumPy,
5145 байтПопробуйте онлайн!
-6 байт благодаря @xnor
Функция принимает два аргумента:0 до n - 1 .
numpy
матрицу и вектор перестановок, имеющие значения отисточник
for
-loop не пришла мне в голову.Wolfram Language (Mathematica) , 30 байтов
Попробуйте онлайн!
Введите как
f[A][u]
.источник
PowerShell ,
787371 байтПопробуйте онлайн .
источник
Желе , 13 байт
Попробуйте онлайн!
источник
J , 19 байт
Попробуйте онлайн!
]/:~"1/:
/:
сортирует левый аргумент (матрицу) в соответствии с порядком, в котором сортируется правый аргумент (указанный порядок). Это сортирует строки./:~"1
снова сортируется в соответствии с указанным порядком]
. Но на этот раз мы сортируем с рангом 1, то есть сортируем каждую строку, что приводит к сортировке столбцов.],:/:
Мы применяем вышеизложенное с использованием как указанного заказа, так]
и повышения уровня указанного заказа/:
. Это дает нам 2 результата, которые мы хотим.источник
u
разрешено на основе 0, так что sort (/:
) может быть indexing ({
) сJavaScript (Node.js) ,
777068 байтПопробуйте онлайн!
источник
v
было. Неплохо, как вы нашли использование в нестрогом режиме тихого сбоя присвоения свойства примитивному значению и использовали его для базового случая рекурсии.APL (Dyalog Extended) , 12 байтов SBCS
Попробуйте онлайн!
⎕
[3,1,2]
⍮⍨
сопоставление-селфи;[[3,1,2],[3,1,2]]
⍋¨
перестановка-инверсия каждого;[[2,3,1],[2,3,1]]
⍛
тогда⍮⍨
сопоставь с собой[[[2,3,1],[2,3,1]],[[3,1,2],[3,1,2]]]
⌷
∘
⎕
¨
источник
J ,
17 16 1514 байтов-1 благодаря @Jonah
Попробуйте онлайн!
источник
([{"1{)~(,:/:)
: Попробуйте онлайн!Древесный уголь , 24 байта
Попробуйте онлайн! Ссылка на подробную версию кода. 0 индексированные. Примечание: конечный пробел. Объяснение:
источник
Котлин , 213 байтов
Попробуйте онлайн!
источник
APL + WIN, 21 байт
Запрашивает ввод u с последующим. Вывод b сразу поверх c без разделителя:
Попробуйте онлайн! Предоставлено Dyalog Classic
источник
Perl 5 , 79 байт
Попробуйте онлайн!
источник
Желе ,
12 1113 байт+2 :( чтобы исправить случаи, когда B = C
Двоичный Ссылка принимая список списков,
A
(n
поn
), на левой и список первыхn
чисел справа,u
, что дает список списков списков[B, C]
.Попробуйте онлайн!
Как?
источник
q, 26 байтов
iasc
возвращает индексы для сортировки аргументов.источник
Чисто , 91 байт
Попробуйте онлайн!
Определяет
$ :: {{a}} [Int] -> [{{a}}]
(используется вместе сa = Int
) получение массива массивов и списка индексов, начинающихся с нуля, возвращая список массивов массивов, содержащих B и C.источник
Python 3 , 91 байт
Попробуйте онлайн!
Принимает параметры в виде списка 2D и 1D и возвращает список, содержащий два списка 2D B и C. Я не уверен, есть ли более чистый способ сделать все циклы for.
источник
C ++ (gcc) ,
148142 байтаПопробуйте онлайн!
Благодаря предложению @ceilingcat использовать #import <queue> вместо <vector>, что таинственным образом приводит к std :: vector
источник