La idea
Hemos hecho espirales matriciales antes, y rotaciones completas, e incluso rotaciones diagonales , ¡pero no, por lo que puedo encontrar, rotaciones de serpientes !
¿Qué es una rotación de serpiente?
Imagine las filas de una matriz que se deslizan de un lado a otro, con divisores entre ellos como los divisores de la cola larga:
+--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15|
+------------ |
20 19 18 17 16|
+--------------+
Ahora imagine rotar estos elementos en 2. Cada elemento avanza, como las personas que se mueven en línea, y los elementos al final se derraman y vuelven al principio:
+--------------+
--> 19 20 1 2 3|
+------------ |
| 8 7 6 5 4|
| +-----------+
| 9 10 11 12 13|
+------------ |
<-- 18 17 16 15 14|
+--------------+
Si hay un número impar de filas, saldrá por la derecha, pero aún así se ajustará al principio. Por ejemplo, aquí hay una rotación de 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 rotación negativa te llevará hacia atrás. Aquí hay una rotación -2:
+--------------+
<-- 3 4 5 6 7|
+------------ |
|12 11 10 9 8|
| +-----------+
|13 14 15 1 2 <--
+--------------+
El reto
Su función o programa tomará 2 entradas, en cualquier formato conveniente:
- Una matriz
- Un número entero (positivo o negativo) que indica cuántos lugares rotarlo.
Regresará:
- La matriz rotada
Notas:
- Código de golf. Pocos bytes ganan.
- Las matrices no necesitan ser cuadradas, pero contendrán al menos 2 filas y 2 columnas
- Los enteros positivos rotarán la fila 1 hacia la derecha
- Los enteros negativos rotarán la fila 1 hacia la izquierda
- Puede revertir el significado de los números de rotación positiva / negativa, si es conveniente
- El número de rotación puede ser mayor que el número de artículos. En ese caso, se envolverá. Es decir, será equivalente al módulo de número el número de elementos.
- La matriz contendrá solo enteros, pero puede contener cualquier número entero, incluidas las repeticiones.
Casos de prueba
Formato:
- Matriz
- Número de rotación
- Valor de retorno esperado
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