Pomysł
Robiliśmy już spirale macierzy, pełne obroty, a nawet obroty po przekątnej , ale nie, o ile potrafię, rotacje węża !
Co to jest obrót węża?
Wyobraź sobie rzędy matrycy wężące się w przód iw tył, z dzielnikami między nimi jak dzielniki długiej kolejki:
+--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15|
+------------ |
20 19 18 17 16|
+--------------+
Teraz wyobraź sobie, że obracasz te elementy o 2. Każdy przedmiot przesuwa się, podobnie jak ludzie poruszający się w linii, a przedmioty na końcu wysypują się i wracają do początku:
+--------------+
--> 19 20 1 2 3|
+------------ |
| 8 7 6 5 4|
| +-----------+
| 9 10 11 12 13|
+------------ |
<-- 18 17 16 15 14|
+--------------+
Jeśli liczba wierszy jest nieparzysta, wyjdzie ona z prawej strony, ale nadal będzie zawijać się na początek. Na przykład, oto 3 obrót:
+--------------+
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 -->
+--------------+
Negatywny obrót zabierze Cię do tyłu. Oto obrót -2:
+--------------+
<-- 3 4 5 6 7|
+------------ |
|12 11 10 9 8|
| +-----------+
|13 14 15 1 2 <--
+--------------+
Wyzwanie
Twoja funkcja lub program przyjmie 2 dane wejściowe, w dowolnym dogodnym formacie:
- Matryca
- Liczba całkowita (dodatnia lub ujemna) wskazująca, ile miejsc ją obrócić.
Zwróci:
- Obrócona matryca
Uwagi:
- Kod golfa. Wygrywa najmniej bajtów.
- Matryce nie muszą być kwadratowe, ale będą zawierać co najmniej 2 wiersze i 2 kolumny
- Dodatnie liczby całkowite będą obracać wiersz 1 w prawo
- Ujemne liczby całkowite będą obracać wiersz 1 w lewo
- W razie potrzeby możesz odwrócić znaczenie dodatnich / ujemnych liczb rotacji
- Liczba rotacji może być większa niż liczba elementów. W takim przypadku zostanie zawinięty. Oznacza to, że będzie to równoważne liczbie modułów.
- Macierz będzie zawierać tylko liczby całkowite, ale może zawierać dowolne liczby całkowite, w tym powtórzenia
Przypadki testowe
Format:
- Matryca
- Numer obrotu
- Oczekiwana wartość zwrotu
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