정수의 2D 배열이 주어지면 행과 열을 블록으로 정렬하십시오. 즉, 주어진 행이나 열만 정렬해야하지만 2D 배열의 다른 모든 행이나 열에 정렬하는 데 필요한 변환을 적용해야합니다.
규칙
- 입력은 정수의 2D 배열과 1- 인덱스 정수입니다. 이 정수는 숫자가 양수이면 정렬 될 행을 나타내거나 숫자가 음수이면 (또는 원하는 다른 방식으로) 정렬 될 열을 나타냅니다. 예 :
4x3
(행 x 열) 배열이 주어지면 두 번째 열을-2
인수로 정렬 하거나 세 번째 열을 인수로 정렬 할 수 있습니다3
. 이 두 번째 인수는 절대 0이 아니며 절대 값은 배열의 해당 차원보다 크지 않습니다. - 주어진 행이나 열을 정렬하기 위해 필요한 변환이 적용된 2D 정수 배열도 출력됩니다. 또는 STDOUT에 배열을 쓸 수 있습니다.
- 출력 배열에는 지정된 행 또는 열이 오름차순으로 정렬됩니다. 두 개의 숫자를 연속으로 교체해야 할 경우 숫자가있는 전체 열이 교체됩니다. 그리고 한 열에서 두 개의 숫자를 바꾸어야 할 때 숫자가있는 전체 행이 바뀝니다.
- 정렬 할 행 / 열에 동일한 숫자가 여러 번 나타나는 경우 값을 바꾸는 방법에 따라 가능한 여러 가지 솔루션이있을 수 있습니다. 나머지 행 / 열을 바꾸어야합니다.
예
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]
이것은 code-golf 이므로 각 언어마다 가장 짧은 코드가 이길 수 있습니다!