回到学校了!因此,对于兼职工作,您正在学校的图书馆里帮忙。问题是,首席图书馆馆长甚至从未听过“杜威十进制”一词,更不用说实施该系统了。取而代之的是,随着库的扩展,正在使用的排序系统已经“有机地”增长了。
为了保持理智,您选择编写一个程序来帮助您归还书本,因为如果对书本进行错误的分类会给您带来麻烦。(首席图书馆员非常严格。)
输入输出
- 输入将是(假设的)书名列表,每行一个,来自STDIN /等效语言。
- 您一次最多只能输入100本书(您一次只能在图书馆中随身携带这么多书籍)。
- 书的标题中可以有多个单词,这些单词可以用空格或其他标点符号(例如,冒号
:
,破折号-
等)分隔。 - 为了便于计算,假设所有标题均为UTF-8。
输出是相同的标题,根据以下规则排序,每行再一次,与STDOUT /语言等效。
排序规则
根据书籍的平均字符值(即,累积字符值除以书籍标题中的字符数)对书籍进行数字排序,并按以下规则计数:
- 所有字符都用于确定标题中的字符数。
- 小写字母按其在字母表中的位置计数。(a = 1,b = 2,... z = 26)
- 如果标题中包含大写字母,则它们的小写字母价值为1.5(A = 1.5,B = 3,... Z = 39)。(“大写字母很重要!”图书管理员说。)
- 该列表中的每个标点符号/符号在
!@#$%^&*()-=_+[]\{}|;':",./<>?~
取平均值之前均从累计值中计数为-1。(“华丽的标题不是!”) - 如果标题中包含以阿拉伯数字表示的数字,则在排序之前从平均值中减去该数字。多个连续的数字被视为一个数字(例如,
42
将减去42,而不是减去4,然后再减去2)。单个数字不计入累计值(即,每个数字贡献0),但DO计入字符数。请注意,这可能会导致负值,应适当对待。(有传言,图书馆员迷恋数学老师已有好几年了。) - 如果书名包含两个以开头的单独单词
R
,则该书的得分为“无穷大”,并被丢到角落的一堆书中(即,随机排列在列表的末尾)。(图书馆员曾经被一个带有这些缩写的人丢弃,或者您已经听说过。) - 空格不计入字符的累积值(即,它们贡献0),但确实对标题中的字符数有所贡献。
- 不符合上述规则的字符(例如a
ÿ
)不会计入字符的累积值(即,它们贡献0),但确实会增加标题中的字符数。 - 例如,假设的书
ÿÿÿÿÿ
的“分数”为(0+0+0+0+0) / 5 = 0
,但是假设的书的ÿÿyÿÿ
分数为(0+0+25+0+0) / 5 = 5
。 - 您可以按自己选择的顺序输出两本“得分”相同的书。(无论如何,它们在同一架子上)
示例输入1
War and Peace
Reading Rainbow: The Best Unicorn Ever
Maus
Home for a Bunny
示例输出1(括号中带有“分数”以显示推理-您无需打印它们)
War and Peace (8.5)
Home for a Bunny (10.125)
Maus (15.125)
Reading Rainbow: The Best Unicorn Ever (infinity)
示例输入2
Matthew
Mark
Luke
John
Revelations
示例输出2(括号中带有“分数”以显示推理-您无需打印它们)
Mark (12.375)
John (13)
Revelations (13.545454...)
Luke (13.75)
Matthew (~13.786)
示例输入3
42
9 Kings
1:8
7th
示例输出3(括号中带有“分数”以显示推理-您无需打印它们)
42 (-42)
1:8 (-9.3333...)
9 Kings (~0.36)
7th (2.3333...)
其他限制
- 这就是Code-Golf,因为您需要使程序保持秘密,以防止馆员不断注视,并且程序越小,隐藏起来就越容易。
- 适用标准漏洞限制
- 不要让图书馆员把所有的时间都花在PPCG上让你放松下来。