Podane są kwadratu macierzy oraz listy (lub wektor) o długości zawierające numery przez (lub przez ). Twoim zadaniem jest zmiana kolejności kolumn i wierszy macierzy zgodnie z kolejnością określoną w .
Oznacza to, że można skonstruować macierzy , gdzie -ty element to -ty element . Powinieneś także wypisać odwrotność tej akcji; to znaczy, że (i, j) -ty element kończy się w położeniu w nowej macierzy .
Na przykład, biorąc pod uwagę
wynikiem powinno być
Wejścia i wyjścia można pobierać dowolną z domyślnych metod we / wy. Nie musisz określać, która macierz jest lub , o ile wypisujesz oba. Możesz założyć, że zawiera tylko dodatnie liczby całkowite i możesz użyć indeksowania opartego na 1 lub 0 dla . Musisz obsługiwać macierze do rozmiaru co najmniej .
Przykład
===== 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
źródło
0
jako separatora?u = [2, 0, 1]
?Odpowiedzi:
R , 42 bajty
Wypróbuj online!
Przyjmuje
A
jakomatrix
indeksy oparte na 1 i 1o
.źródło
MATL ,
1513 bajtówWejścia
u
zatemA
.Wyjścia
B
, a następnieC
bez separatora, ponieważ nie ma dwuznaczności.Wypróbuj online!
Wyjaśnienie
źródło
Oktawa , 33 bajty
Wypróbuj online!
Dziękujemy Luisowi za naprawienie błędu i zapisanie kilku bajtów!
Podstawowe indeksowanie działa tutaj dla obu zadań, definiując wektorv równy permutacji, która cofa u . To znaczy, jeśli u = ( 3 , 1 , 2 ) to pierwszy element v wynosi 2, ponieważ 1 znajduje się w drugiej pozycji u . Dokonuje się tego za pomocą funkcji sortowania Octave .
źródło
Python 3 z numpy,
5145 bajtówWypróbuj online!
-6 bajtów dzięki @xnor
Funkcja przyjmuje dwa argumenty:0 do n - 1 .
numpy
macierz i wektor permutacji o wartościach odźródło
for
pętli nie przyszedł mi do głowy.Wolfram Language (Mathematica) , 30 bajtów
Wypróbuj online!
Wprowadź jako
f[A][u]
.źródło
PowerShell ,
787371 bajtówWypróbuj online .
źródło
Galaretka , 13 bajtów
Wypróbuj online!
źródło
J , 19 bajtów
Wypróbuj online!
]/:~"1/:
/:
sortuje lewy arg (macierz) zgodnie z kolejnością, która posortuje prawy arg (określona kolejność). To sortuje wiersze./:~"1
ponownie zgodnie z podaną kolejnością]
. Ale tym razem sortujemy według rangi 1, tzn. Sortujemy każdy wiersz, co powoduje sortowanie kolumn.],:/:
Stosujemy powyższe, stosując zarówno określone zamówienie, jak]
i ocenę podanego zamówienia/:
. To daje nam 2 wyniki, które chcemy.źródło
u
może być oparty na 0, więc sort (/:
) może indeksować ({
) z zamienionymi argumentamiJavaScript (Node.js) ,
777068 bajtówWypróbuj online!
źródło
v
było, zajęło mi minutę . To fajne, jak znalazłeś zastosowanie do cichego niepowodzenia przypisania właściwości w trybie nieokreślonym do prymitywnej wartości i wykorzystałeś to w przypadku podstawowej rekurencji.APL (Dyalog Extended) , 12 bajtów SBCS
Wypróbuj online!
⎕
[3,1,2]
⍮⍨
zestawienie selfie;[[3,1,2],[3,1,2]]
⍋¨
inwersja permutacji każdego;[[2,3,1],[2,3,1]]
⍛
następnie⍮⍨
zestaw ze sobą[[[2,3,1],[2,3,1]],[[3,1,2],[3,1,2]]]
⌷
∘
⎕
¨
źródło
J ,
17 16 1514 bajtów-1 dzięki @Jonah
Wypróbuj online!
źródło
([{"1{)~(,:/:)
: Wypróbuj online!Węgiel drzewny , 24 bajty
Wypróbuj online! Link jest do pełnej wersji kodu. 0-indeksowane. Uwaga: końcowe miejsce. Wyjaśnienie:
źródło
Kotlin , 213 bajtów
Wypróbuj online!
źródło
APL + WIN, 21 bajtów
Monituje o wprowadzenie u, po którym następuje a. Wysyła b bezpośrednio nad górę c bez separatora:
Wypróbuj online! Dzięki uprzejmości Dyalog Classic
źródło
Perl 5 , 79 bajtów
Wypróbuj online!
źródło
Galaretka ,
12 1113 bajtów+2 :(, aby naprawić przypadki, gdy B = C
Dwójkowym link przyjmując listę list
A
(n
przezn
), po lewej stronie, a także wykaz pierwszychn
liczb po prawej stronieu
, co daje listę list list[B, C]
.Wypróbuj online!
W jaki sposób?
źródło
q, 26 bajtów
iasc
zwraca indeksy, aby posortować argument.źródło
Czysty , 91 bajtów
Wypróbuj online!
Definiuje
$ :: {{a}} [Int] -> [{{a}}]
(używane za = Int
) pobieranie tablicy tablic i listy indeksów zerowych, zwracając listę tablic tablic zawierających B i C.źródło
Python 3 , 91 bajtów
Wypróbuj online!
Pobiera parametry jako listę 2D i 1D i zwraca listę zawierającą dwie listy 2D B i C. Nie jestem pewien, czy istnieje prostszy sposób wykonywania wszystkich pętli for.
źródło
C ++ (gcc) ,
148142 bajtówWypróbuj online!
Dzięki sugestii @ceilingcat, aby użyć #import <kolejka> zamiast <vector>, co w tajemniczy sposób przynosi std :: vector
źródło