Sie erhalten ein Quadrat Matrix und eine Liste (oder einen Vektor) der Länge mit den Zahlen bis (oder bis ). Ihre Aufgabe ist es, die Spalten und Zeilen der Matrix in der in angegebenen Reihenfolge neu anzuordnen .A u
Das heißt, Sie konstruieren eine Matrix in der das -te Element das -te Element von . Sie sollten auch die Umkehrung dieser Aktion ausgeben. das heißt, das (i, j) -te Element von wird an der Position am Ende in einer neuen Matrix .
Beispiel:
Die Ausgabe sollte
Sie können Eingaben und Ausgaben über eine der Standard-E / A-Methoden vornehmen. Sie müssen nicht angeben, welche Matrix oder , solange Sie beide ausgeben. Sie können annehmen, dass nur positive ganze Zahlen enthält, und Sie können die 1- oder 0-basierte Indizierung für . Sie müssen Matrizen mit einer Größe von mindestens .
Beispiel
===== 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
quelle
0
als Trennzeichen verwenden?u = [2, 0, 1]
?Antworten:
R , 42 Bytes
Probieren Sie es online!
Nimmt
A
alsmatrix
und 1-basierte Indizeso
.quelle
MATL ,
1513 BytesEingänge
u
, dannA
.Ausgänge
B
, dannC
ohne Trennzeichen, da keine Mehrdeutigkeit besteht.Probieren Sie es online!
Erläuterung
quelle
Oktave , 33 Bytes
Probieren Sie es online!
Vielen Dank an Luis für die Korrektur eines Fehlers und das Speichern mehrerer Bytes!
Die grundlegende Indizierung funktioniert hier für beide Aufgaben, indem ein Vektorv definiert wird , der der Permutation entspricht, die u aufhebt . Das heißt, wenn u = ( 3 , 1 , 2 ) dann ist das erste Element von v 2, da 1 in der zweiten Position von u . Dies wird mit Oktaves erreicht Sortierfunktion.
quelle
Python 3 mit numpy,
5145 BytesProbieren Sie es online!
-6 Bytes dank @xnor
Die Funktion akzeptiert zwei Argumente: eine0 bis n - 1 .
numpy
Matrix und einen Permutationsvektor mit Werten vonquelle
for
Schleife zu verwenden, kam mir nicht in den Sinn.Wolfram Language (Mathematica) , 30 Byte
Probieren Sie es online!
Eingabe als
f[A][u]
.quelle
PowerShell ,
787371 BytesProbieren Sie es online aus .
quelle
Jelly , 13 Bytes
Probieren Sie es online!
quelle
J , 19 Bytes
Probieren Sie es online!
]/:~"1/:
/:
sortiert das linke Argument (Matrix) in der Reihenfolge, in der das rechte Argument (angegebene Reihenfolge) sortiert wird. Dies sortiert die Zeilen./:~"1
wieder in der angegebenen Reihenfolge sortiert]
. Aber diesmal sortieren wir mit Rang 1, dh wir sortieren jede Zeile, wodurch Spalten sortiert werden.],:/:
Wir wenden das oben Genannte sowohl unter Verwendung der angegebenen Bestellung]
als auch der Bewertung der angegebenen Bestellung an/:
. Dies gibt uns die 2 gewünschten Ergebnisse.quelle
u
darf 0-basiert sein, also könnte sort (/:
) indexing ({
) withJavaScript (Node.js) ,
777068 BytesProbieren Sie es online!
quelle
v
war. Es ist ganz einfach, wie Sie eine Verwendung für den stillen Fehler des nicht strengen Modus bei der Zuweisung von Eigenschaften zu einem primitiven Wert gefunden und diese für Ihren Rekursionsgrundfall verwendet haben.APL (Dyalog Extended) , 12 Byte SBCS
Probieren Sie es online!
⎕
[3,1,2]
⍮⍨
Gegenüberstellung-Selfie;[[3,1,2],[3,1,2]]
⍋¨
Permutation-Inversion von jedem;[[2,3,1],[2,3,1]]
⍛
dann⍮⍨
mit sich selbst gegenüberstellen[[[2,3,1],[2,3,1]],[[3,1,2],[3,1,2]]]
⌷
∘
⎕
¨
quelle
J ,
17 16 1514 Bytes-1 danke an @Jonah
Probieren Sie es online!
quelle
([{"1{)~(,:/:)
: Probieren Sie es online!Kohle , 24 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. 0-indiziert. Hinweis: Leerzeichen am Ende. Erläuterung:
quelle
Kotlin , 213 Bytes
Probieren Sie es online!
quelle
APL + WIN, 21 Bytes
Fordert zur Eingabe von u auf, gefolgt von a. Gibt b direkt über c ohne Trennzeichen aus:
Probieren Sie es online! Mit freundlicher Genehmigung von Dyalog Classic
quelle
Perl 5 , 79 Bytes
Probieren Sie es online!
quelle
Jelly ,
12 1113 Bytes+2 :(, um Fälle zu beheben, in denen B = C ist
Ein dyadischer Link, der eine Liste von Listen
A
(n
vonn
) auf der linken Seite und eine Liste der erstenn
ganzen Zahlen auf der rechten Seite akzeptiertu
, die eine Liste von Listen von Listen ergibt[B, C]
.Probieren Sie es online!
Wie?
quelle
q, 26 Bytes
iasc
Gibt Indizes zurück, um das Argument zu sortieren.quelle
Sauber , 91 Bytes
Probieren Sie es online!
Definiert
$ :: {{a}} [Int] -> [{{a}}]
(verwendet mita = Int
) das Aufnehmen eines Arrays von Arrays und einer Liste von nullbasierten Indizes und das Zurückgeben einer Liste von Arrays von Arrays, die B und C enthalten.quelle
Python 3 , 91 Bytes
Probieren Sie es online!
Nimmt Parameter als 2D- und 1D-Liste und gibt eine Liste mit zwei 2D-Listen B und C zurück. Ich bin nicht sicher, ob es eine sauberere Möglichkeit gibt, alle for-Schleifen durchzuführen.
quelle
C ++ (GCC) ,
148142 BytesProbieren Sie es online!
Dank @ceilingcat Vorschlag, #import <queue> anstelle von <vector> zu verwenden, was auf mysteriöse Weise std :: vector bringt
quelle