Ide
Kami telah melakukan spiral matriks sebelumnya, dan rotasi penuh, dan bahkan rotasi diagonal , tetapi sejauh ini saya tidak bisa, rotasi ular !
Apa itu rotasi ular?
Bayangkan deretan matriks yang bolak-balik, dengan pembagi di antara mereka seperti pembagi antrian panjang:
+--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15|
+------------ |
20 19 18 17 16|
+--------------+
Sekarang bayangkan memutar item-item ini dengan 2. Setiap item bergerak maju, seperti orang-orang bergerak dalam satu baris, dan item-item di ujung tumpah dan kembali ke awal:
+--------------+
--> 19 20 1 2 3|
+------------ |
| 8 7 6 5 4|
| +-----------+
| 9 10 11 12 13|
+------------ |
<-- 18 17 16 15 14|
+--------------+
Jika ada jumlah ganjil dari baris itu akan keluar dari kanan, tetapi masih membungkus ke awal. Sebagai contoh, ini adalah 3 rotasi:
+--------------+
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 -->
+--------------+
Rotasi negatif akan membawa Anda mundur. Ini rotasi -2:
+--------------+
<-- 3 4 5 6 7|
+------------ |
|12 11 10 9 8|
| +-----------+
|13 14 15 1 2 <--
+--------------+
Tantangan
Fungsi atau program Anda akan mengambil 2 input, dalam format apa pun yang nyaman:
- Sebuah matriks
- Integer (positif atau negatif) yang menunjukkan berapa banyak tempat untuk memutarnya.
Itu akan kembali:
- Matriks yang diputar
Catatan:
- Golf kode. Bytes paling sedikit menang.
- Matriks tidak harus persegi, tetapi akan mengandung setidaknya 2 baris dan 2 kolom
- Bilangan bulat positif akan memutar baris 1 ke kanan
- Bilangan bulat negatif akan memutar baris 1 ke kiri
- Anda dapat membalikkan arti angka rotasi positif / negatif, jika nyaman
- Jumlah rotasi bisa lebih besar dari jumlah item. Dalam hal ini, itu akan dibungkus. Artinya, itu akan setara dengan jumlah modulo jumlah item.
- Matriks hanya akan berisi bilangan bulat, tetapi mungkin berisi bilangan bulat apa pun, termasuk pengulangan
Uji Kasus
Format:
- Matriks
- Nomor rotasi
- Nilai pengembalian yang diharapkan
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