介绍
您有被困在障碍道上的失控汽车中的不幸。除了损坏的转向系统外,汽车的所有功能均无响应。它可以直行,也可以向右转。可以引导汽车安全吗?
机械学
您的汽车从8x8地图的左上角开始,并试图在右下角实现安全。赛车的方向(最初是向右)以90度为增量进行测量。汽车可以执行以下两项操作之一:
- 向前开一个方块,或者
- 顺时针旋转90度,然后向前驱动一个方块
请注意,汽车无法足够急转弯以在单个广场上执行180度转弯。
一些广场是障碍。如果汽车进入障碍物广场,它将坠毁。假定8x8航道之外的所有物体都是障碍物,因此驶离航道等同于坠毁。
右下角的正方形是安全正方形,它使汽车能够逃脱障碍物路线。假定起始正方形和安全正方形不是障碍。
任务
您必须编写一个程序或函数,以8x8数组(矩阵,列表列表等)为输入,表示障碍物路线。程序返回或打印一个布尔值或类似的真值。如果汽车有可能在不撞车的情况下到达安全广场(即,如果地图可解决),则输出为True
,否则为False
。
计分
标准代码高尔夫规则-获胜者是字节最少的代码。
奖金:
如果对于一张可解决的地图,您的代码输出了一系列有效的驾驶员输入来引导汽车驶入安全广场,请从得分中减去10个百分点。示例输出格式可能是
SRSSR
(指示“直”,“右”,“直”,“直”,“右”)。该输出将替代标准True
输出。如果对于无法解决的地图,代码的输出区分不可避免的崩溃情况和可能永远绕过障碍物路线的情况,请从分数中减去10个百分点。
Crash
如果无法避免发生碰撞,或者Stuck
汽车永远卡在障碍物路线中,则可能是示例输出。这些输出将替代False
无法解决的地图的标准输出。
例
如果给程序一个8x8数组,例如:
[[0, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0],
[1, 1, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 1, 0, 0, 0, 0],
[0, 0, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 1, 0],
[0, 0, 0, 0, 0, 0, 1, 0],
[0, 1, 1, 0, 0, 0, 1, 0]]
它将被解释为这样的地图,黑色方块表示障碍物:
可能的解决方案可能是:
由于存在解决方案,因此程序应True
为该地图返回/打印。此处显示的移动顺序为SSSSRSRRRSRSSRRRSSRSSS
。
Crash
Stuck
Crash
Stuck