Ý tưởng
Chúng tôi đã thực hiện các ma trận xoắn ốc trước đây, và các phép quay đầy đủ, và thậm chí cả các đường chéo chéo , nhưng không, như tôi có thể tìm thấy, xoay rắn !
Một vòng quay rắn là gì?
Hãy tưởng tượng các hàng của một ma trận bắt đầu qua lại, với các vạch chia giữa chúng giống như các vạch chia của hàng dài:
+--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15|
+------------ |
20 19 18 17 16|
+--------------+
Bây giờ hãy tưởng tượng xoay các vật phẩm này bằng 2. Mỗi vật phẩm tiến lên, như mọi người di chuyển trong một dòng và các vật phẩm ở cuối tràn ra và trở về đầu:
+--------------+
--> 19 20 1 2 3|
+------------ |
| 8 7 6 5 4|
| +-----------+
| 9 10 11 12 13|
+------------ |
<-- 18 17 16 15 14|
+--------------+
Nếu có một số hàng lẻ, nó sẽ thoát khỏi bên phải, nhưng vẫn quấn vào đầu. Ví dụ: đây là một vòng quay 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 -->
+--------------+
Một vòng quay tiêu cực sẽ đưa bạn trở lại. Đây là một vòng quay -2:
+--------------+
<-- 3 4 5 6 7|
+------------ |
|12 11 10 9 8|
| +-----------+
|13 14 15 1 2 <--
+--------------+
Các thách thức
Chức năng hoặc chương trình của bạn sẽ có 2 đầu vào, ở bất kỳ định dạng thuận tiện nào:
- Một ma trận
- Một số nguyên (dương hoặc âm) cho biết có bao nhiêu vị trí để xoay nó.
Nó sẽ trở lại:
- Ma trận xoay
Ghi chú:
- Mã golf. Ít byte nhất sẽ thắng.
- Ma trận không cần phải là hình vuông, nhưng sẽ chứa ít nhất 2 hàng và 2 cột
- Số nguyên dương sẽ xoay hàng 1 về phía bên phải
- Số nguyên âm sẽ xoay hàng 1 về phía bên trái
- Bạn có thể đảo ngược ý nghĩa của các số xoay dương / âm, nếu thuận tiện
- Số vòng quay có thể lớn hơn số lượng mặt hàng. Trong trường hợp đó, nó sẽ bọc lại. Đó là, nó sẽ tương đương với số modulo số lượng vật phẩm.
- Ma trận sẽ chỉ chứa các số nguyên, nhưng nó có thể chứa bất kỳ số nguyên nào, kể cả lặp lại
Các trường hợp thử nghiệm
Định dạng:
- Ma trận
- Số vòng quay
- Giá trị lợi nhuận dự kiến
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