基于块状vs.平滑字符串。
/\_/\/\__/\/\/\/\_/\_/\
当您真的很无聊时,在键盘上制作花粉很有趣。但是,并非所有的花鼓都是一样的。有些花鼓是光滑的,例如\___/
,而有些是矮胖的,例如/\/\/\/\
。其他人则完全崩溃,例如////_\\\
在每个N
字形字符中,都有字形N-1
连接点。每个弯头连接点分为以下三种类型之一:
平滑(角度>“ 90度”):
\_ __ _/
矮胖(角度=“ 90度”)
/\ \/
坏了(没有连接的任何东西)
// \\ /_ _\
让我们来定义的平滑度是那些光滑,结的比例chunkiness和破碎类似定义。每个值的范围在0
和之间1
。花样的光滑度,粗大度和断裂度之和始终等于1。
例如,该花体/\/\\_//\_
具有3个平滑结,4个块状结和2个折断结。因此0.3333
,它是光滑,0.4444
厚实和0.2222
破碎的。
空字符串和只有一个字符的字符串具有未定义的值,所有输入的长度至少为2个字符。
挑战
编写一个程序,接受任意长度的花样,并输出其平滑度,块度和破损值中的任意两个。
- 您可以编写程序或函数,并通过STDIN,命令行或字符串参数输入。
- 您可以假定输入的长度至少为> = 2,并且仅由
/\_
带有可选尾随换行符的字符组成。 - 打印(或返回一个函数)两个浮点数的精度至少为四舍五入,四舍五入或截断。如果真实值为
2/3
,可接受的值包括0.6666
和之间的任何值0.6667
,甚至是诸如0.666637104
。如果确切值为1/3
,则任何包含的答案0.3333
都是有效的。如果值小于1,则可以省略尾随零,也可以省略前导零。 - 根据需要输出三个值中的任意一对,只需确保说明两个值和顺序。
以字节为单位的最短代码获胜。
例子
/\/\\/\//\\
→平滑0
,Chunkiness 0.7
,残破0.3
_/\\_/\\/__/\\\//_
→平滑0.29411764705
,Chunkiness 0.29411764705
,残破0.41176470588
//\\__/_\/
→平滑0.3333333
,Chunkiness 0.2222222
,残破0.4444444
奖励问题:您更喜欢哪个,平滑的,粗大的或折断的花形?