L'idea
Abbiamo già fatto spirali di matrice in precedenza, rotazioni complete e persino rotazioni diagonali , ma non, per quanto posso trovare, rotazioni di serpenti !
Che cos'è una rotazione del serpente?
Immagina le file di una matrice che serpeggia avanti e indietro, con divisori tra loro come i divisori di una lunga coda:
+--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15|
+------------ |
20 19 18 17 16|
+--------------+
Ora immagina di ruotare questi oggetti di 2. Ogni oggetto avanza, come le persone che si muovono in una linea, e gli oggetti alla fine si riversano e ritornano all'inizio:
+--------------+
--> 19 20 1 2 3|
+------------ |
| 8 7 6 5 4|
| +-----------+
| 9 10 11 12 13|
+------------ |
<-- 18 17 16 15 14|
+--------------+
Se c'è un numero dispari di righe, uscirà da destra, ma andrà comunque a capo all'inizio. Ad esempio, ecco una rotazione 3:
+--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15
+--------------+
+--------------+
--> 13 14 15 1 2|
+------------ |
| 7 6 5 4 3|
| +-----------+
| 8 9 10 11 12 -->
+--------------+
Una rotazione negativa ti porterà indietro. Ecco una rotazione -2:
+--------------+
<-- 3 4 5 6 7|
+------------ |
|12 11 10 9 8|
| +-----------+
|13 14 15 1 2 <--
+--------------+
La sfida
La tua funzione o programma prenderà 2 ingressi, in qualsiasi formato conveniente:
- Una matrice
- Un numero intero (positivo o negativo) che indica il numero di posizioni in cui ruotarlo.
Restituirà:
- La matrice ruotata
Gli appunti:
- Codice golf. Vince il minor numero di byte.
- Le matrici non devono necessariamente essere quadrate, ma conterranno almeno 2 righe e 2 colonne
- Gli interi positivi ruotano la riga 1 verso destra
- Gli interi negativi ruotano la riga 1 verso sinistra
- È possibile invertire il significato dei numeri di rotazione positivi / negativi, se conveniente
- Il numero di rotazione può essere maggiore del numero di elementi. In tal caso, andrà a capo. Cioè, sarà equivalente al numero modulo il numero di elementi.
- La matrice conterrà solo numeri interi, ma può contenere numeri interi, comprese le ripetizioni
Casi test
Formato:
- Matrice
- Numero di rotazione
- Valore di ritorno atteso
4 5
6 7
1
6 4
7 5
2 3 4 5
6 7 8 9
10 11 12 13
-3
5 9 8 7
12 11 10 6
13 2 3 4
8 8 7 7
5 5 6 6
10
5 5 8 8
6 6 7 7