SP901 INDEXGEN - Index Generation
题目描述
大多数非小说类书籍和参考书都有一个索引,用于帮助读者快速找到特定术语或概念。这里是一个示例:
> ```
> larch, 4, 237, 238, 414
> + Monty Python and, 64, 65, 66
> + planting of, 17
> Lenny Kravitz, 50
> + going his way, 53
> lumbago, 107
> mango
> + Chris Kattan, 380
> + storage of, 87, 90
> + use in Nethack, 500, 501
> + Vitamin C content, 192
> ```
每个索引条目由一个**主条目**组成,后面可以有零个或多个以 '+' 开头的**次级条目**。条目通常跟随有一组页码引用。然而,如果存在至少一个次级条目,主条目可能不带页码引用(例如上面的_mango_)。主条目按字母顺序排序,主条目后的次级条目也按字母顺序排列,排序时不区分大小写。页码按照升序排列,并且没有重复(同一页上的重复条目不会重复记录)。
你的任务是读取包含嵌入式索引信息的文档,并根据这些信息生成对应的索引。文档由一行或多行 ASCII 文本组成,页码从 1 开始,字符 '&' 表示新页的开始(页码加 1)。索引条目通过**标记**表示,其格式如下:
> `{_文本_%_主条目_$_次级条目_}`
其中,_文本_为索引的文本,_主条目_是可选的替代主条目,_次级条目_是可选的次级条目。'%_主条目_' 和 '$_次级条目_' 都是可选的,但如果两者都存在,必须按上述顺序出现。如果 _主条目_ 存在,则使用该条目作为主条目,否则使用 _文本_ 作为主条目。如果 _次级条目_ 存在,则该标记为其添加页码;否则,标记为主条目添加页码。单个标记不能同时为主条目和次级条目添加页码。以下是四种标记类型的示例,对应于上面示例索引的条目。
> ```
> ... his {lumbago} was acting up, so ...
> ... {Lenny%Lenny Kravitz} lit up the crowd with his version of ...
> ... Monty Python often used the {larch$Monty Python and} in ...
> ... when storing {mangos%mango$storage of}, be sure to ...
> ```
输入由一个或多个文档构成,以一个仅含 '\*\*' 的行表示输入结束。文档按顺序编号,从 1 开始。每个文档由一行或多行文本组成,通过一行仅含 '\*' 表示文档结束。文档的文本行最长79个字符(不包括换行符)。对于每个文档 _i_,输出 'DOCUMENT _i_',随后是按照示例格式排序的索引。
请注意以下几点:
- 每个文档最多100个标记,其中最多20个主条目。
- 每个主条目最多5个次级条目。
- 每个条目最多10个唯一页码(不含重复)。
- 字符 '&' 仅用于分页,并且一个文档中最多出现500次。
- 字符 '\*' 仅用于表示文档或输入的结束。
- 标记中使用的字符 '{'、'}'、'%' 和 '$' 不会在普通文本或条目中出现。
- 标记可以跨多行。标记中的每个换行符应转为一个空格。
- 标记内的空格(包括转换后的换行符)一般保留在文本或条目中。但 '{' 后、'}' 前以及紧邻 '%' 或 '$' 的空格应忽略。
- 每个标记(包括换行符转换为空格)总长度不超过79字符。
```
输入:
Call me Ishmael.
*
One {fish $unary}, two {fish$ binary},&red {fish $ scarlet}, blue {fish$
azure}. & By { Dr. Seuss }.
*
This is a {simple } & & { document} that &{
simply %simple
$adverb
} & {illustrates %vision} &&&&& one {simple-minded% simple} {Judge}'s {vision}
for what a {document } might { look % vision} like.
*
**
```
```
输出:
DOCUMENT 1
DOCUMENT 2
Dr. Seuss, 3
fish
+ azure, 2
+ binary, 1
+ scarlet, 2
+ unary, 1
DOCUMENT 3
document, 3, 10
Judge, 10
simple, 1, 10
+ adverb, 4
vision, 5, 10
```
**本翻译由 AI 自动生成**
输入格式
无
输出格式
无