想法
我们之前已经完成了矩阵螺旋旋转,完整旋转甚至对角旋转,但据我所知,还没有蛇旋转!
什么是蛇旋转?
想象一下矩阵的行来回蛇行,它们之间的分隔线就像长队列的分隔线一样:
+--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15|
+------------ |
20 19 18 17 16|
+--------------+
现在,假设将这些项目旋转2。每个项目都会前进,就像人们在一条直线上移动一样,最后的项目会溢出并回到起点:
+--------------+
--> 19 20 1 2 3|
+------------ |
| 8 7 6 5 4|
| +-----------+
| 9 10 11 12 13|
+------------ |
<-- 18 17 16 15 14|
+--------------+
如果行数奇数,它将从右边退出,但仍会换行到开头。例如,这是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 -->
+--------------+
负旋转会使您倒退。这是-2旋转:
+--------------+
<-- 3 4 5 6 7|
+------------ |
|12 11 10 9 8|
| +-----------+
|13 14 15 1 2 <--
+--------------+
挑战
您的函数或程序将接受2种输入,采用任何方便的格式:
- 矩阵
- 一个整数(正数或负数),指示将其旋转多少个位置。
它将返回:
- 旋转矩阵
笔记:
- 代码高尔夫。最少的字节数获胜。
- 矩阵不必为正方形,但将至少包含2行2列
- 正整数将使第1行向右旋转
- 负整数将使第1行向左旋转
- 如果方便,您可以反转正/负转数的含义
- 旋转数可以大于项目数。在这种情况下,它将包装。也就是说,它等于项目数的模数。
- 矩阵将仅包含整数,但可以包含任何整数,包括重复
测试用例
格式:
- 矩阵
- 转数
- 预期收益
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