Se le da un cuadrado matriz , y una lista (o vector) de longitud contiene los números a (o a ). Su tarea es reordenar las columnas y filas de la matriz acuerdo con el orden especificado en .
Eso es, se construye una matriz en donde el elemento-ésimo es el elemento -ésimo de . También debe generar el inverso de esta acción; es decir, el elemento-ésima (i, j) de va a terminar en la posición en una nueva matriz .
Por ejemplo, dado
la salida debe ser
Puede tomar entrada y salida a través de cualquiera de los métodos de E / S predeterminados. No tiene que especificar qué matriz es o , siempre que genere ambas. Puede suponer que solo contiene enteros positivos, y puede usar indexación basada en 1 o 0 para . Debe admitir matrices de al menos .
Ejemplo
===== 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
fuente
0
como separador?u = [2, 0, 1]
?Respuestas:
R , 42 bytes
Pruébalo en línea!
Toma
A
como unmatrix
y los índices basados en 1o
.fuente
MATL ,
1513 bytesEntradas
u
, entoncesA
.Salidas
B
, luegoC
sin separador, ya que no hay ambigüedad.Pruébalo en línea!
Explicación
fuente
Octava , 33 bytes
Pruébalo en línea!
¡Gracias a Luis por corregir un error y guardar varios bytes!
fuente
Python 3 con numpy,
5145 bytesPruébalo en línea!
-6 bytes gracias a @xnor
numpy
fuente
for
no se me ocurrió la idea de usar un bucle.Wolfram Language (Mathematica) , 30 bytes
Pruébalo en línea!
Ingresar como
f[A][u]
.fuente
PowerShell ,
787371 bytesPruébalo en línea .
fuente
Jalea , 13 bytes
Pruébalo en línea!
fuente
J , 19 bytes
Pruébalo en línea!
]/:~"1/:
/:
clasifica el argumento izquierdo (matriz) de acuerdo con el orden que ordenaría el argumento derecho (orden especificado). Esto ordena filas./:~"1
nuevo según el orden especificado]
. Pero esta vez estamos ordenando con el rango 1, es decir, estamos ordenando cada fila, lo que tiene el efecto de ordenar las columnas.],:/:
Aplicamos lo anterior utilizando el orden especificado]
y la calificación del orden especificado/:
. Esto nos da los 2 resultados que queremos.fuente
u
se le permite estar basada en 0, por lo sort (/:
) podría ser de indexación ({
) con argumentos intercambiadosJavaScript (Node.js) ,
777068 bytesPruébalo en línea!
fuente
v
era. Es interesante cómo encontró un uso para la falla silenciosa de modo no estricto de la asignación de propiedades a un valor primitivo, y lo usó para su caso base de recursión.APL (Dyalog Extended) , SBCS de 12 bytes
Programa completo Indicaciones paratu y entonces UN . Huellas dactilaresC cerca de si , separados por dos espacios
Pruébalo en línea!
⎕
solicitar[3,1,2]
⍮⍨
yuxtaposición-selfie;[[3,1,2],[3,1,2]]
⍋¨
permutación-inversión de cada uno;[[2,3,1],[2,3,1]]
⍛
luego⍮⍨
yuxtaponerse consigo mismo[[[2,3,1],[2,3,1]],[[3,1,2],[3,1,2]]]
⌷
reordenar∘
el valor de⎕
¨
usando cada par como un conjunto de órdenes, una orden por ejefuente
J ,
17 16 1514 bytes-1 gracias a @Jonah
Pruébalo en línea!
fuente
([{"1{)~(,:/:)
: ¡ Pruébelo en línea!Carbón de leña , 24 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. 0 indexado. Nota: espacio final. Explicación:
fuente
Kotlin , 213 bytes
Pruébalo en línea!
fuente
APL + WIN, 21 bytes
Solicita la entrada de u seguido de a. Salidas b inmediatamente sobre la parte superior de c sin separador:
Pruébalo en línea! Cortesía de Dyalog Classic.
fuente
Perl 5 , 79 bytes
Pruébalo en línea!
fuente
Jalea ,
12 1113 bytes+2 :( para arreglar casos cuando B = C
Un Enlace diádica aceptar una lista de listas,
A
(n
porn
), a la izquierda y una lista de los primerosn
números enteros a la derecha,u
que da una lista de listas de listas,[B, C]
.Pruébalo en línea!
¿Cómo?
fuente
q, 26 bytes
iasc
devuelve índices para ordenar su argumento.fuente
Limpio , 91 bytes
Pruébalo en línea!
Define
$ :: {{a}} [Int] -> [{{a}}]
(se usa cona = Int
) tomar una matriz de matrices y una lista de índices basados en cero, devolviendo una lista de matrices de matrices que contienen B y C.fuente
Python 3 , 91 bytes
Pruébalo en línea!
Toma los parámetros como una lista 2D y 1D y devuelve una lista que contiene dos listas 2D B y C. No estoy seguro de si hay una forma más limpia de hacer todos los bucles for.
fuente
C ++ (gcc) ,
148142 bytesPruébalo en línea!
Gracias a la sugerencia de @ceilingcat de usar #import <queue> en lugar de <vector> que misteriosamente trae std :: vector
fuente