Dada una matriz 2D de enteros, clasifiquemos sus filas y columnas en bloques. Esto significa que solo tiene que ordenar una fila o columna dada, pero aplicando las transformaciones necesarias para ordenarla a cada otra fila o columna en la matriz 2D.
Reglas
- La entrada será una matriz 2D de enteros y un entero indexado 1. Este entero representará la fila que se ordenará si el número es positivo, o la columna que se ordenará si el número es negativo (o al revés que desee). Ejemplo: Dada una
4x3
matriz (filas x columnas), puede ordenar la segunda columna con un-2
argumento o la tercera fila con un3
argumento. Este segundo argumento nunca será cero y su valor absoluto nunca será mayor que la dimensión correspondiente de la matriz. - La salida también será una matriz 2D de enteros con las transformaciones necesarias aplicadas para ordenar la fila o columna dada. Alternativamente, puede escribir la matriz en STDOUT.
- La matriz de salida tendrá la fila o columna especificada ordenada en orden ascendente. Solo tenga en cuenta que cuando necesite intercambiar dos números seguidos, se intercambiarán todas las columnas donde se encuentran los números. Y cuando necesite intercambiar dos números en una columna, se intercambiarán todas las filas donde se encuentran los números.
- En el caso en que el mismo número aparezca varias veces en la fila / columna que se va a ordenar, habrá varias soluciones posibles de acuerdo con la forma en que intercambia los valores, solo haga lo que corresponda con el resto de filas / columnas que se intercambiarán.
Ejemplos
Positive indices for rows and negative indices for columns
[5 8 7 6 [1 3 2 4
1 3 2 4 order by -3 (3rd column) --> 9 6 3 0
9 6 3 0] 5 8 7 6]
[5 8 7 6 [9 6 3 0
1 3 2 4 order by -4 (4th column) --> 1 3 2 4
9 6 3 0] 5 8 7 6]
[5 8 7 6 [5 7 8 6
1 3 2 4 order by 2 (2nd row) --> 1 2 3 4
9 6 3 0] 9 3 6 0]
[5 8 7 6 [6 7 8 5
1 3 2 4 order by 3 (3rd row) --> 4 2 3 1
9 6 3 0] 0 3 6 9]
[1 2 [1 2 [3 2
3 2] order by -2 (2nd column) --> 3 2] or 1 2] (both are valid)
[7 5 9 7 [5 7 7 9 [5 7 7 9
1 3 2 4 order by 1 (1st row) --> 3 1 4 2 or 3 4 1 2
9 6 3 0] 6 9 0 3] 6 0 9 3]
Este es el código de golf , ¡así que puede ganar el código más corto para cada idioma!