#1908. 弹球游戏(Linear Pachinko)
弹球游戏(Linear Pachinko)
Description
在本题中,一个弹球游戏机器是包含一个或多个以下字符的序列:孔(".")、地板("_")、墙壁("|")、山峰("/\")。其中山峰包含两个字符:山峰的左边"/"和山峰的右边"\"。在弹球游戏机器中,一个墙壁(或山峰)永远不会与另一个墙壁(或山峰)相邻。
该游戏的玩法是:在机器的上方随机地抛下弹球。
如果弹球能通过孔,那么弹球最终穿过机器;如果弹球落到地板上方则停下来;如果弹球落到山峰的左边,则弹球反弹,通过所有连续的地板直到掉到孔里去,或者出了机器的边界,或者撞到墙壁或山峰则停下来;如果弹球落到山峰的右边,结果类似;如果弹球抛到墙壁的上方,则分别以50%的概率做落到山峰左、右边一样类似的处理。
本道题要求解的是,如果弹球随机的从机器的上方抛下(随机的意思就是从每个字符位置上方垂直抛下的机会均等),那么弹球最终能通过孔和出边界的几率是多少?
例如,考虑如下的机器,其中的数字表明字符的位置,并不是机器的一部分。
123456789
/\.|__/\.
当在字符上方抛下弹球时,弹球通过孔或出边界的几率分别为:1=100%,
2=100%, 3=100%, 4=50%, 5=0%, 6=0%, 7=0%, 8=100%,
9=100%。因此最终对整个机器,在机器上方随机抛下弹球,弹球通过孔和出边界的几率为以上几率的平均值,即为61.111%。
Input Format
输入文件包含一个或多个测试数据,每个测试数据表示一个弹球游戏,包含1~79个字符,占一行。输入文件最后一行为字符"#",表示输入文件的结束。
Output Format
对每个弹球游戏,精确地计算随机抛下弹球后,弹球通过孔和出边界的几率并输出。每个弹球游戏的输出占一行,对求得的几率(百分比)精确到整数(舍弃小数部分)。
/\.|__/\.
_._/\_|.__/\./\_
...
___
./\.
#
61
53
100
0
100