这个挑战发生在网格上。
+----------+
| |
| |
| |
| |
| |
| |
| |
| |
| |
+----------+
这个是10 x 10,但可以是任何矩形。
该网格上有四个方向。上,下,左和右。
任务是绘制从大写字母方向初始位置开始的路径。在此示例中,将从U直接向上。
+----------+
| |
| |
| |
| |
| |
| |
| |
| |
| U |
+----------+
路径将向上并且由句号(。)组成,直到碰到墙为止,然后以星号(*)终止。
+----------+
| * |
| . |
| . |
| . |
| . |
| . |
| . |
| . |
| U |
+----------+
除了路径开始之外,还有换向器,以小写字母缩写“ initial”表示。
+----------+
| |
| |
| |
| r.....*|
| . |
| . |
| . |
| . |
| U |
+----------+
同样,大写字母X us是将终止路径的障碍物。
+----------+
| |
| |
| |
| |
| r...*X |
| . |
| . |
| . |
| U |
+----------+
规则
- 输入的字符串是一个由框架组成的字符串(由|,-和+字符组成),其中包含表示路径起点,方向改变器和障碍物的字符。
- 您的代码应添加句号,以遵循起点和方向更改器描述的路径,并在路径遇到墙或障碍物时添加星号。
- 可以有多个路径开始。
- 如果路径描述了循环,则代码仍将终止而不会出现错误。
- 如果路径与路径起点相遇,它将充当换向器。
- 请输入代码高尔夫球,低字节代码,没有标准漏洞。
- 我一直喜欢链接到在线解释器的链接。
测试用例
1:简单
+----------+
| |
| |
| |
| |
| |
| |
| |
| |
| U |
+----------+
+----------+
| * |
| . |
| . |
| . |
| . |
| . |
| . |
| . |
| U |
+----------+
2:右转
+----------+
| |
| |
| |
| r |
| |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| r.....*|
| . |
| . |
| . |
| . |
| U |
+----------+
3:十字路口
+----------+
| |
| |
| |
| r d |
| |
| u l |
| |
| |
| U |
+----------+
+----------+
| * |
| . |
| . |
| . r..d |
| . . . |
| u....l |
| . |
| . |
| U |
+----------+
4:4条穿越道路
+----------+
| D |
| |
| |
|R |
| |
| L|
| |
| |
| U |
+----------+
+----------+
| * D |
| . . |
| . . |
|R........*|
| . . |
|*........L|
| . . |
| . . |
| U * |
+----------+
5:第一循环
+----------+
| |
| |
| |
| r d |
| |
| u l |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| r..d |
| . . |
| u..l |
| . |
| . |
| U |
+----------+
6:起动器作为更换器
+----------+
| |
| |
| |
| L |
| |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
|*..L |
| . |
| . |
| . |
| . |
| U |
+----------+
7:直环
+----------+
| |
| |
| |
| |
| r l |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| |
| r..l |
| . |
| . |
| . |
| U |
+----------+
8:紧结
+----------+
| |
| |
| |
| d l |
| r u |
| r u |
| |
| |
| U |
+----------+
+----------+
| * |
| . |
| . |
| d..l |
| .r.u |
| r.u |
| . |
| . |
| U |
+----------+
9:障碍
+----------+
| |
| |
| |
| |
| r X |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| |
| r...*X |
| . |
| . |
| . |
| U |
+----------+
10:S形
+----------+
|r d |
| |
| XXXXXXXX|
| d l |
|ul |
|XXXXXXX |
| |
|R u |
| |
+----------+
+----------+
|r.....d |
|. * |
|. XXXXXXXX|
|.d......l |
|ul . |
|XXXXXXX . |
| . |
|R.......u |
| |
+----------+
11:四向结
+----------+
| D |
| |
| r |
|R d |
| |
| u L|
| l |
| |
| U |
+----------+
+----------+
| * D |
| . . |
| r.....*|
|R....d. |
| .... |
| .u....L|
|*.....l |
| . . |
| U * |
+----------+
12:繁忙的路口
+----------+
|rrrrr rrrd|
| rlrl |
|ul rrd |
|ruX X |
|udl ll |
|ull |
|rlr |
|rdr d |
|Uruull |
+----------+
+----------+
|rrrrr.rrrd|
|.rlrl .|
|ul rrd .|
|ruX.X. .|
|udl.ll .|
|ull. .|
|rlr. .|
|rdr..d .|
|Uruull *|
+----------+
13:开始进入边缘
+----------+
| U |
| |
| |
| |
| |
| |
| |
| |
| |
+----------+
+----------+
| U |
| |
| |
| |
| |
| |
| |
| |
| |
+----------+
14:穿越死路
+----------+
| |
| |
| |
| R |
| |
| |
| |
| |
| U|
+----------+
+----------+
| *|
| .|
| .|
| R..*|
| .|
| .|
| .|
| .|
| U|
+----------+
@TFeld添加,谢谢!
—
AJFaraday
在您的测试案例中,似乎总是可以找到所有方向转换器,这可以简化算法。我建议在不正确的地方添加一个测试用例。
—
Arnauld
@Arnauld我敢肯定有一个在12的情况下一些未使用的方向换
—
AJFaraday
据说网格可以是任何矩形,但是所有测试用例的大小和形状都相同。
—
gastropner