从左上角开始的直升飞机正在降落(出于这个问题的目的,在2D空间中)朝地面。它具有自动驾驶模式和手动模式。
自动驾驶模式的行为如下:
- 如果正下方的空间是可用的,则下降至该位置。
- 否则,完全随机地向左或向右移动一步。(它可以以此方式移动多个步骤。)
并且它会不断重复这两个步骤,直到它落地。手动模式更加智能,即使在需要向上移动或进行一些熟练操作的情况下,也会找到通往地面的最佳路径。
您的工作是确定
- 自动驾驶仪将在给定情况下通过,
- 在特定情况下,自动驾驶仪可能会失败,
- 自动驾驶仪将失败,但是手动模式将通过,或者
- 两种模式都将失败(没有有效的接地路径)。
输入值
- 给定场景为1d或2d非空数组,使用两个不同的字符表示自由空间和受阻空间。标点符号是可选的。
- 可选:数组的尺寸
输出量
四个预定义字符之一,指示发生了哪种情况。
样本数据
在输入中使用0(空)和1(阻止),在输出中使用1 2 3 4(如上编号)
0 0 0 0
0 1 0 0
0 0 0 1
1 1 0 0
输出: 1
0 0 1 0
1 0 0 1
0 0 0 0
0 1 1 0
0 0 0 1
输出:(2
直升机将在第四行遇到1,如果处于自动驾驶模式,它有可能陷在第5行的末尾)
0 0 0 1 0
0 1 1 0 0
0 1 0 0 0
0 0 0 1 0
1 1 1 1 0
输出:(3
这需要向上移动,因此自动驾驶仪会失败)
1 0 0
0 0 0
输出: 4
0 0 0 0 1
1 1 1 0 0
1 0 0 1 0
0 1 0 0 0
0 0 1 1 1
输出: 4
@MartinBüttner完成。作为旁注,您是希望人们在沙箱中发布,还是直接发布并纠正他们的错误?第二种选择较为简单,因此,除非有一定的诱因,否则我无法想象为什么要遵循第一种选择。
—
ghosts_in_the_code
我个人更喜欢沙盒,因为它使人们有更多的时间在人们开始应对挑战之前考虑潜在的错误,漏洞或丢失的测试用例。如果有人对有缺陷的挑战发布了早期答案,那么您必须在不使现有答案无效的情况下真正解决挑战。
—
Martin Ender
另外-输入是否始终是字符,或者它们可以是布尔值/整数/等?然后输出-可以是整数,还是必须是字符?
—
并非查尔斯