Учитывая двумерный массив целых чисел, давайте отсортируем его строки и столбцы по блокам. Это означает, что вам нужно только отсортировать заданную строку или столбец, но применить преобразования, необходимые для сортировки, для каждой другой строки или столбца в двумерном массиве.
правила
- Входными данными будут двумерный массив целых чисел и целое число с 1 индексом. Это целое число будет представлять строку, подлежащую сортировке, если число положительное, или столбец, подлежащий сортировке, если число отрицательное (или наоборот, если вы хотите). Пример: учитывая
4x3
массив (строки х столбцов), вы можете отсортировать второй столбец с помощью-2
аргументом или третью строку с3
аргументом. Этот второй аргумент никогда не будет нулевым, и его абсолютное значение никогда не будет больше соответствующего измерения массива. - Выходными данными будет также двумерный массив целых чисел с необходимыми преобразованиями, примененными для сортировки заданной строки или столбца. В качестве альтернативы вы можете просто записать массив в 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]
Это код-гольф , поэтому может выиграть самый короткий код для каждого языка!