On vous donne un carré matrice , et une liste (ou vecteur) de longueur contenant les nombres à (ou à ). Votre tâche consiste à réorganiser les colonnes et les lignes de la matrice selon l'ordre spécifié en .
Autrement dit, on va construire une matrice où le -ième élément est le -ième élément de . Vous devez également sortir l'inverse de cette action; Autrement dit, la (i, j) -ième élément de finira à la position dans une nouvelle matrice .
Par exemple, étant donné
la sortie doit être
Vous pouvez accepter l'entrée et la sortie via l'une des méthodes d'E / S par défaut. Vous n'avez pas besoin de spécifier quelle matrice est ou , tant que vous sortez les deux. Vous pouvez supposer que ne contient que des entiers positifs et vous pouvez utiliser une indexation basée sur 1 ou 0 pour . Vous devez prendre en charge les matrices jusqu'à au moins la taille .
Exemple
===== 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
la source
0
comme séparateur?u = [2, 0, 1]
?Réponses:
R , 42 octets
Essayez-le en ligne!
Prend
A
commematrix
index a et 1o
.la source
MATL ,
1513 octetsEntrées
u
, alorsA
.Sorties
B
, puisC
sans séparateur, car il n'y a pas d'ambiguïté.Essayez-le en ligne!
Explication
la source
Octave , 33 octets
Essayez-le en ligne!
Merci à Luis d' avoir corrigé une erreur et économisé plusieurs octets!
L'indexation de base fonctionne ici pour les deux tâches, en définissant un vecteurv égal à la permutation qui annule u . Autrement dit, si u = ( 3 , 1 , 2 ) alors le premier élément de v est 2, puisque 1 est dans la deuxième position de u . Ceci est accompli avec la fonction de tri d'Octave .
la source
Python 3 avec numpy,
5145 octetsEssayez-le en ligne!
-6 octets grâce à @xnor
La fonction prend deux arguments: une0 à n - 1 .
numpy
matrice et un vecteur de permutation ayant des valeurs dela source
for
boucle n'était pas venue à l'esprit.Wolfram Language (Mathematica) , 30 octets
Essayez-le en ligne!
Saisissez comme
f[A][u]
.la source
PowerShell ,
787371 octetsEssayez-le en ligne .
la source
Gelée , 13 octets
Essayez-le en ligne!
la source
J , 19 octets
Essayez-le en ligne!
]/:~"1/:
/:
trie l'argument gauche (matrice) selon l'ordre qui trierait l'argument de droite (ordre spécifié). Cela trie les lignes./:~"1
nouveau trié selon l'ordre spécifié]
. Mais cette fois, nous trions avec le rang 1, c'est-à-dire que nous trions chaque ligne, ce qui a pour effet de trier les colonnes.],:/:
Nous appliquons ce qui précède en utilisant à la fois la commande spécifiée]
et la note supérieure de la commande spécifiée/:
. Cela nous donne les 2 résultats que nous voulons.la source
u
est autorisé à être basé sur 0, donc sort (/:
) pourrait être indexé ({
) avec desJavaScript (Node.js) ,
777068 octetsEssayez-le en ligne!
la source
v
était. C'est bien comment vous avez trouvé une utilisation pour l'échec silencieux en mode non strict de l'affectation de propriété à une valeur primitive, et que vous l'avez utilisé pour votre cas de base de récursivité.APL (Dyalog Extended) , 12 octets SBCS
Essayez-le en ligne!
⎕
[3,1,2]
⍮⍨
juxtaposition-selfie;[[3,1,2],[3,1,2]]
⍋¨
permutation-inversion de chacun;[[2,3,1],[2,3,1]]
⍛
puis se⍮⍨
juxtaposent à lui-même[[[2,3,1],[2,3,1]],[[3,1,2],[3,1,2]]]
⌷
∘
⎕
¨
la source
J ,
17 16 1514 octets-1 grâce à @Jonah
Essayez-le en ligne!
la source
([{"1{)~(,:/:)
: Essayez-le en ligne!Fusain , 24 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. 0 indexé. Remarque: Espace de fin. Explication:
la source
Kotlin , 213 octets
Essayez-le en ligne!
la source
APL + WIN, 21 octets
Invite à saisir u suivi de a. Sorties b immédiatement au-dessus de c sans séparateur:
Essayez-le en ligne! Gracieuseté de Dyalog Classic
la source
Perl 5 , 79 octets
Essayez-le en ligne!
la source
Gelée ,
12 1113 octets+2 :( pour corriger les cas où B = C
Un lien dyadique acceptant une liste de listes,
A
(n
parn
), sur la gauche et une liste des premiersn
nombres entiers sur le côté droitu
, ce qui donne une liste de listes de listes,[B, C]
.Essayez-le en ligne!
Comment?
la source
q, 26 octets
iasc
renvoie des index pour trier son argument.la source
Nettoyer , 91 octets
Essayez-le en ligne!
Définit
$ :: {{a}} [Int] -> [{{a}}]
(utilisé aveca = Int
) la prise d'un tableau de tableaux et une liste d'index de base zéro, renvoyant une liste de tableaux de tableaux contenant B et C.la source
Python 3 , 91 octets
Essayez-le en ligne!
Prend les paramètres sous forme de liste 2D et 1D et renvoie une liste contenant deux listes 2D B et C. Je ne sais pas s'il existe un moyen plus propre de faire toutes les boucles for.
la source
C ++ (gcc) ,
148142 octetsEssayez-le en ligne!
Merci à la suggestion de @ceilingcat d'utiliser #import <queue> au lieu de <vector> qui apporte mystérieusement std :: vector
la source