考虑类似的机制这个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是较早的帖子。