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