Dato un array 2D di numeri interi, ordiniamo le sue righe e colonne in blocchi. Ciò significa che devi solo ordinare una determinata riga o colonna, ma applicando le trasformazioni necessarie per ordinarlo su ogni altra riga o colonna nell'array 2D.
Regole
- L'input sarà un array 2D di numeri interi e un numero intero 1 indicizzato. Questo numero intero rappresenterà la riga da ordinare se il numero è positivo o la colonna da ordinare se il numero è negativo (o viceversa). Esempio: dato un
4x3
array (righe x colonne) è possibile ordinare la seconda colonna con un-2
argomento o la terza riga con un3
argomento. Questo secondo argomento non sarà mai zero e il suo valore assoluto non sarà mai maggiore della dimensione corrispondente dell'array. - L'output sarà anche un array 2D di numeri interi con le trasformazioni necessarie applicate per ordinare la riga o colonna specificata. In alternativa puoi semplicemente scrivere l'array su STDOUT.
- L'array di output avrà la riga o colonna specificata in ordine crescente. Basta notare che quando è necessario scambiare due numeri di fila, le colonne intere in cui si trovano i numeri verranno scambiate. E quando è necessario scambiare due numeri in una colonna, le intere righe in cui si trovano i numeri verranno scambiate.
- Nel caso in cui lo stesso numero appaia più volte nella riga / colonna da ordinare, ci saranno diverse soluzioni possibili in base al modo in cui si scambiano i valori, basta fare di conseguenza con il resto delle righe / colonne da scambiare.
Esempi
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]
Questo è code-golf , quindi può vincere il codice più breve per ogni lingua!