也许它不是真正的迷宫,但仍然如此。
规则:
输入是一个两行字符串,包括
*
,1
,x
和X
。那根绳子是迷宫。线的长度相等。您可以将输入作为带有
,
(逗号)的字符串或这两行之间的任何方便的分隔符。或者,您也可以将这两行作为函数的单独参数。输出是退出字符串必须执行的步骤数(最后一步是将您移出字符串的步骤)。
您从左上角(较高的线)开始,在第一个符号之前。
对于每一步,您将向前移动一个符号(从第n个位置到第(n + 1)个位置)。然后,根据您所踩的角色,结果是不同的。这是每个字符的作用:
*
- 没有。您通常只是踩到它。x
-踩到它后,切换线路,但与起点保持相同的水平距离。例如,您踩到较高行的第三个位置,并在x
此处遇到了一个小写字母。然后,您立即移至下一行,但再次移至第三位置。X
-切换线路并转到下一个位置。此处的示例相同,但您也从第三位置移至第四位置(因此,第二行位于第四位置)。1
-向前移动另一个位置。
每个角色完成工作后,将替换为空格,不再“有效”。
示例如下。
输入:
x *
如前所述,您从第一行的第一个符号开始。第一步将您移至字母上
x
,此字母将您切换至第二行。该字母x
不再用作x
,而是由代替*
。在后面的示例中,这将更有意义。您现在位于底行的星号上,对您没有任何作用。第二步是将您向前移动,然后退出弦线,因此迷宫完成了,并且花费了2个步骤。
输出
2
。输入:
xX* x1*
第一步:继续前进
x
,这会将您移至x
下一行的。这是一条规则,该规则说使用的字符替换为星号。然后,您移回第一行,但x
由于它已被使用并成为星号,因此不再存在。因此,您可以安全地在该星号上移动,并且该步骤已完成(您现在位于第一行的第一个位置)。第二步:继续前进
X
,它会将您推到较低的线,然后再将您向前推。您现在位于第二行的第三个位置(星号),而从未访问过第二个位置(包含1
)。第三步:向前移动,退出字符串。
输出:
3
。
测试用例:
输入:
*1* xxx
输出:
3
。(因为1
使您跳到第三位置)。在那里您永远不会访问第二行,但这是输入的必需部分。输入:
*X*1*x x*1xx*
输出:
4
。输入:
1x1x ***X
输出:
3
。输入:
1*x1xxx1*x x*x1*11X1x
输出:
6
。输入:
xXXXxxx111* **xxx11*xxx
输出:
6
。
"\n\n"
是两行字符串...
1
,从第一行开始,然后向前移动一步,然后完成迷宫...