Fikir
Daha önce matris spiraller, tam dönüşler ve hatta çapraz dönüşler yaptık , ancak bulabildiğim kadarıyla yılan dönüşleri yapmıyoruz !
Bir yılan rotasyonu nedir?
Uzun kuyruktaki bölücüler gibi aralarındaki bölücülerle ileri geri dönen matrisin satırlarını hayal edin:
+--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15|
+------------ |
20 19 18 17 16|
+--------------+
Şimdi bu öğeleri 2'ye döndürdüğünüzü hayal edin. Her bir öğe, bir satırda hareket eden insanlar gibi ilerler ve sondaki öğeler dökülür ve başa döner:
+--------------+
--> 19 20 1 2 3|
+------------ |
| 8 7 6 5 4|
| +-----------+
| 9 10 11 12 13|
+------------ |
<-- 18 17 16 15 14|
+--------------+
Tek sayıda satır varsa, sağdan çıkar, ancak yine de başlangıca sarılır. Örneğin, işte 3 rotasyon:
+--------------+
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 -->
+--------------+
Negatif bir dönüş sizi geri götürür. İşte bir -2 dönüş:
+--------------+
<-- 3 4 5 6 7|
+------------ |
|12 11 10 9 8|
| +-----------+
|13 14 15 1 2 <--
+--------------+
Meydan okuma
İşleviniz veya programınız herhangi bir uygun biçimde 2 giriş alacaktır:
- Bir matris
- Kaç yer döndüreceğini gösteren bir tam sayı (pozitif veya negatif).
Geri dönecek:
- Döndürülmüş matris
Notlar:
- Kod golfü. En az bayt kazanır.
- Matrislerin kare olması gerekmez, ancak en az 2 satır ve 2 sütun içerecektir
- Pozitif tamsayılar satır 1'i sağa döndürür
- Negatif tamsayılar 1. satırı sola döndürür
- Uygunsa, pozitif / negatif rotasyon numaralarının anlamını tersine çevirebilirsiniz.
- Dönme sayısı madde sayısından daha büyük olabilir. Bu durumda, sarılacak. Başka bir deyişle, öğe sayısına göre modulo sayısına eşdeğer olacaktır.
- Matris yalnızca tam sayıları içerecek, ancak tekrarlar da dahil olmak üzere tüm tam sayıları içerebilir
Test Kılıfları
Biçim:
- Matris
- Dönme numarası
- Beklenen getiri değeri
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