Dada uma matriz 2D de números inteiros, vamos classificar suas linhas e colunas em blocos. Isso significa que você só precisa classificar uma linha ou coluna, mas aplicar as transformações necessárias para classificá-la em todas as outras linhas ou colunas da matriz 2D.
Regras
- A entrada será uma matriz 2D de números inteiros e um inteiro indexado em 1. Esse número inteiro representará a linha a ser classificada se o número for positivo ou a coluna a ser classificada se o número for negativo (ou o contrário que você desejar). Exemplo: Dada uma
4x3
matriz (linhas x colunas), você pode classificar a segunda coluna com um-2
argumento ou a terceira linha com um3
argumento. Este segundo argumento nunca será zero e seu valor absoluto nunca será maior que a dimensão correspondente da matriz. - A saída também será uma matriz 2D de números inteiros com as transformações necessárias aplicadas para classificar a linha ou coluna especificada. Como alternativa, você pode simplesmente escrever a matriz em STDOUT.
- A matriz de saída terá a linha ou coluna especificada classificada em ordem crescente. Observe que quando você precisar trocar dois números seguidos, as colunas inteiras onde estão os números serão trocadas. E quando você precisar trocar dois números em uma coluna, as linhas inteiras onde estão os números serão trocadas.
- No caso em que o mesmo número aparecer várias vezes na linha / coluna a ser classificada, haverá várias soluções possíveis de acordo com a maneira como você troca os valores, apenas faça o mesmo com o restante das linhas / colunas a serem trocadas.
Exemplos
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 é o código-golfe , portanto, pode ganhar o código mais curto para cada idioma!