给定一个字符串列表,将该列表按数字排序,而无需知道使用了什么底数。数字的值也是未知的('1'
> 可能是'2'
)。
由于数字的值未知,因此请使用本福德定律(或第一数字定律)来确定数字的相对值。对于遵循本福德定律的分布,较低值的数字比较高值的数字更频繁地显示为前导数字。
规则
- 这是代码高尔夫球
- 字符串列表可以来自您选择的来源(stdin,变量,文件,用户等)。
- 字符串限于ASCII字符。
- 未显示为前导字符的字符具有最高值。(假设没有零,并严格按照前导频率进行排序。)
- 出现在前导数字处的字符与其他字符相同的次数被平均加权。
例
未分类
['c','ca','ac','cc','a','ccc','cx','cz','cy']
已排序
['c','a','cc','ca','cz','cy','cx','ac','ccc']
注意:在示例中'cz'
,'cy'
和'cx'
可以以任意顺序显示为第5,第6和第7个元素,因为'x'
,'y'
和'z'
的权重相等。
“字符串限于ASCII字符。” 您的示例仅显示字母数字(实际上仅是字母字符)。您是指所有ASCII字符,还是仅[0-9a-zA-Z],小写字母与大写字母的计数相同还是不同?
—
约书亚·泰勒
应支持所有ASCII字符,并且大写和小写字母均不同。
—
雷纳特2014年