给定一组闭合的非重叠2d轮廓(即使在对角线上也至少间隔一个空格),并且箭头始终沿相同的顺时针或逆时针方向(每个轮廓都有自己的方向)和正数方向n
移动箭头n
在各个方向上沿着轮廓移动。箭头分别由> v < ^
右,下,左和上方向表示。那里的其他字符是-
(水平),|
(垂直)和+
(角)。当箭头位于角上时,它将保持其当前方向并仅在转弯后才更改。
在任何两个角之间始终会有一个直线段(或空间)(例如+-+
水平方向和垂直方向类似),也就是说,U
禁止急转弯。拐角之间的线段是垂直或水平的,拐角处的弯曲始终为90度。
输入:
- 正整数--
n
步骤数 - 轮廓的ASCII表示-它可以是多行字符串,字符串列表,字符列表等。
输出:
带有所有箭头的相同轮廓n
在每个轮廓的整体方向上移动了台阶。
测试用例:
1。
输入:
n
= 1
+----->->
| |
| v---+
| |
+---<-------+
输出:
+------>+
| v
| +>--+
| |
+--<--------+
2。
输入:
n
= 2
+-----+ +---+
| | | |
+-->--+ | v
| |
+--->---+ |
| |
+------<<---+
输出:
+-----+ +---+
| | | |
+---->+ | |
| |
+----->-+ v
| |
+----<<-----+
3。
输入:
n
= 3
+---+ +---+ +-------+
| | | v | |
^ | | | +-<-+ |
| | ^ | | v
| +---+ +-->----+ |
| |
| +-------+ +---+ |
| | | v | |
+---+ +---+ +---+
输出:
+>--+ ^---+ +-------+
| | | | ^ |
| | | | +---+ |
| | | | | |
| +---+ v----->-+ |
| |
| +-------+ +---+ v
| | | | | |
+---+ +-<-+ +---+
4。
输入:
n
= 1
+--+
| |
| +---+
| |
+----+ |
| |
+-+
输出:
+--+
| |
| +---+
| |
+----+ |
| |
+-+
5,
输入值
n
= 4
^>>>>
^ v
^ v>>>>
^ v
<<<<<<<<v
输出:
^>>>>
^ v
^ v>>>>
^ v
<<<<<<<<v
6。
输入:
n
= 1
^->
^ v
<<v
输出:
^>+
^ v
<<v
编写解决上述任务的函数或程序。每种语言中以字节为单位的最短代码获胜。不要因为打高尔夫球而灰心。高度赞赏算法和代码的说明。
There will always be a straight segment (or a space) between any two corners (like +-+ for the horizontal and similar for the vertical) - in other words the sharp U turns are forbidden.