考虑类似的机制这个ASCII版本豆机或plinko / 柏青哥游戏:
O
^
\ ^
^ ^ \
\ ^ / ^
U U U U U
1 2 3 4 5
该O是落下来球。
- 当它达到时
^,有50-50的机会会左右移动。 - 当它
/到达时,它总是向左走。 - 当它达到时
\,它总是正确的。
球最终落入U底部的编号槽之一。问题是,每个低谷结束的概率是多少?
对于这种特殊的情况下,该概率是0.0,0.1875,0.5625,0.125,和0.125,用于分别槽1至5。
这里的3个槽代替5.概率是另一个例子0.5,0.5以及0.0:
O
/
^ ^
U U U
1 2 3
在这个挑战中,我们将把这个问题推广到一种以任何方式设置任意数量的层的机制。
挑战
编写一个程序或函数,该程序或函数采用该机制的金字塔结构的ASCII表示形式。(通过标准输入/命令行/功能参数输入。)
您可能会认为它带有适当形状的空间,例如
^
\ ^
^ ^ \
\ ^ / ^
或者您可能会认为它根本没有空格,例如
^
\^
^^\
\^/^
(如果需要,您可以假定存在尾随换行符和/或尾随空格的某种一致模式。)
输入金字塔结构可以具有任意数量的级别(又称线),包括零。每一级具有一个以上^,/或\比上,并且有levels + 1在底部沟槽(其不是输入的一部分)。
您的程序/功能必须打印/返回球在每个槽中着陆的概率列表(按从最左边到最右边的顺序)。这些应该是浮点值,在打印时,它们至少应有3个小数位(不需要多余的零或小数点;1适用于1.000,.5适用于0.500,等等)。如果编写了函数,则可以打印值或返回浮点数的列表/数组。
任何合理的打印列表格式都可以。例如0.5 0.5 0.0,[0.5 0.5 0.0],[0.5, 0.5, 0.0],{0.5, 0.5, 0.0},或0.5\n0.5\n0.0都将是好的。
例子
0级:(归结为一小部分U)
输入:[no input/empty string given]
输出:1.0
1级:
输入:^
输出:0.5 0.5
输入:/
输出:1.0 0.0
输入:\
输出:0.0 1.0
2级:(上面的第二个示例)
输入:
/
^ ^
输出: 0.5 0.5 0.0
3个级别:
输入:
^
^ ^
^ ^ ^
输出: 0.125 0.375 0.375 0.125
输入:
\
/ \
/ / \
输出: 0.0 0.0 0.0 1.0
4级:(上面的第一个示例)
输入:
^
\ ^
^ ^ \
\ ^ / ^
输出: 0.0 0.1875 0.5625 0.125 0.125
7级:
输入:
^
/ ^
^ ^ /
/ \ / \
^ ^ / ^ \
^ \ ^ \ / ^
\ ^ ^ ^ \ ^ /
输出: 0.0 0.09375 0.28125 0.4375 0.1875 0.0 0.0 0.0
计分
以字节为单位的最短答案将获胜。Tiebreaker是较早的帖子。