给定一个字符串,其中第一行包含空格和一个句点(.
,即“球”),然后是包含空格,正斜杠(/
)和反斜杠(\
)的行,请确定从起始位置掉落后球将落入的列。每个/
将其向左移动一列,然后\
将其向右移动一列。
样品输入
.
/ \ \
/ /
\ \/ \
\ /\
\ /\ \
\ /
样品输出
球从第5列开始,击中第/
3行,然后在\
第5到7 行中击中三个,最终位置为:
7
请注意,列是1索引的,主要是为了与文本编辑器约定保持一致。
边缘情况
如果球/
在第一列中击中a ,则它永远卡在不存在的列0中。您的程序应通过打印正确处理此问题0
。
如果球撞到\/
图案的任一侧,则结果不确定。您的程序被允许以无输出终止,无限循环或打印错误消息(我的解决方案显示-1
),但不得打印任何被视为有效输出的内容。
如果球以一定的\\
方式击中左斜线,则应该直接在右斜线下方而不是右斜线结束。我最初设想的解决方案很容易出错,所以不要走这条路!
有可能会或可能不会是以后的空间.
或最后/
或\
每行。您的程序不应依赖此类可用的填充。类似地,第一行之后可能有也可能没有任何行。
您可以假设第一行将有零个或多个空格,而正好为一个.
。随后的行(如果有)将具有零个或多个空格和零个或多个斜杠。
实施细节
您的程序可以在方便时从文件(指定为命令行参数)中读取或从标准输入中读取。
您的程序必须将单个数字输出到标准输出。(是的,可以使用尾随的换行符。是的,该数字可能超过一位。)
测试用例
输入:
.
输出:
1
注意这里的输入正好是一个字节。这是您应该能够处理的最小情况。
输入:
. \ \ \ \
输出:
6
请注意,这些斜杠后没有空格。
输入:
. / /\\ / \ //\ \/// // \\/ \/\ /\/
输出:
0
输入:
. / / / \\\ /\\ / \
输出:
1
输入:
. \ / / \
输出:
4
输入:
. \ \/\/\/
输出:
(anything but a nonnegative number)
结束语
这个问题与模拟(基于重力的)台球式计算机相似,但是非常简单,因此希望它会引起更多的兴趣。
我在Python中有一个169个字符的解决方案。我敢肯定,这里的才华横溢的高尔夫球手会把这张唱片撕成碎片。:^)
这是代码高尔夫球,因此,月底将接受字符中最短的答案!