考虑一个长度为N的字符串,例如Peanut Butter
N =13。请注意,该字符串中有N-1对相邻字符。因为Peanut Butter
,12对中的第一个是Pe
,第二个是ea
,最后一个是er
。
当两对大多数是不同的字符时,字符串具有粗大的质量,例如chUnky
。
当这些对几乎都是相同的字符时,字符串具有平滑的质量,例如sssmmsss
。
将字符串的组块性定义为具有两个不同字符的线对数与线对总数(N-1)的比率。
将字符串的平滑度定义为具有两个相同字符的线对数与线对总数(N-1)的比率。
例如,Peanut Butter
只有一对具有相同字符(tt
)的对,因此其平滑度为1/12或0.0833,而其块状度为11/12或0.9167。
空字符串和仅包含一个字符的字符串被定义为100%平滑和0%厚实。
挑战
编写一个程序,该程序采用任意长度的字符串,并输出其块状或平滑度比率作为浮点值。
- 通过stdin或命令行获取输入,或者您可以编写一个带有字符串的函数。
- 您可以假设输入字符串仅包含可打印的ASCII字符(因此为单行)。
- 将浮点数输出到stdout到小数点后4位或更多位,或者如果编写了函数,则可以选择将其返回。不需要传达任何信息的小数位,例如
0
可以用代替0.0000
。 - 根据需要选择块状或光滑度。只要确定您的程序输出哪个即可。
以字节为单位的最短代码获胜。
例子
Peanut Butter
→粗0.91666666666
度:,平滑度:0.08333333333
chUnky
→粗1.0
度:,平滑度:0.0
sssmmsss
→粗0.28571428571
度:,平滑度:0.71428571428
999
→粗0.0
度:,平滑度:1.0
AA
→粗0.0
度:,平滑度:1.0
Aa
→粗1.0
度:,平滑度:0.0
!
→粗0.0
度:,平滑度:1.0
[空字符串]→粗度:0.0
,光滑度:1.0