这是一道提交答案题。
题目背景
学校的机房里,一台电脑似乎出现了问题:它的硬盘中有许多文件失效,再也读取不出来了。
作为一台使用了很长时间的机器,这种问题相当常见。然而,考虑到其中也许有着有价值的文件,你还是决定备份一下硬盘的可用部分。
就在此时,你在其中发现了一个不得了的东西:
“人工智能:全能版”
试图打开了一下,竟然是可以运行的。然而,你并不知道如何与它交互。
好在这个人工智能还特别贴心地附带了交互用例,然而其中的输入文件也打不开了。唯一可用的,只有一些输出文件。
“要是可以恢复这些输入文件,岂不是很完美。”带着这样的想法,你决定自己去完成这项看起来很难的工作。
题目描述
给定一个 AI,和一些运行结果,你需要编写输入数据,使得 AI 可以输出这些结果。
AI 的内部原理是人类无法理解的,因此只有通过输入与输出的方式才能和 AI 进行交互。
AI 的功能涉及多个方面,因此每个功能都需要测试。遗憾的是,由于丢失了使用手册,这些功能的具体内容只能由你去猜测。
目标文件与输入输出
这是一道提交答案型试题,你不需要提交你的源程序。
本题共有 10 个测试点,每个测试点有 4 个目标文件。目标文件的文件名为 X.taskY,其中 $X$ 为测试点编号,$Y$ 为 $1,4,7,10$ 中的一个。以第一个测试点为例,这 4 个文件为:1.task1, 1.task4, 1.task7, 1.task10。
你需要编写 10 个文件,文件名为 1.out 到 10.out,每一个文件对应一个测试点。
注意,接下来的“输入文件”与“输出文件”是对于 AI 而言的,而不是题目。
AI 被封装成了一个程序,以可执行文件 ai
来表示(使用方法见下文)。AI 以 X.out 为输入,输出到 X.res。你的任务,是使得 X.res 与 X.taskY 中的一个完全一致。此时,此测试点得 $Y$ 分;否则,此测试点得 $0$ 分。
AI 的输入文件第一行是 Type i
,其中 $i$ 为一个整数,表示接下来的任务需要用到哪一种功能。接下来的若干行是输入内容,其格式在不同的功能下有所不同,且意义不明。
AI 的输出文件第一行也是 Type i
,其中 $i$ 与输入文件中相同。接下来的若干行是对应的输出内容。
如何使用AI
你需要使用附加文件中的 ai
,并且有多种方式进行调用。当然,你可以自行修改文件名,但以下的示例表示不做修改时的情况。
首先,你需要进入终端,并通过使用 cd
命令切换到对应的目录下。
1. 在终端下输入
./ai
即可运行 AI。这种方式下,AI 会使用标准输入输出。
2. 你可以加入参数 -s
,让程序从 input.txt 读入,并向 output.txt 中输出,例如:
./ai -s
3. 你可以直接加入数字 $X$,让程序从 X.out 读入,并向 X.res 输出。例如:
./ai 7
表示从 7.out 读入,并向 7.res 输出。
这里,$X$ 可以是任何非负整数,并不限于 $1$ 到 $10$。
4. 你可以加入两个参数,让程序从第一个文件名读入,向第二个文件名输出。例如:
./ai a.out a.res
表示从 a.out 输入,向 a.res 输出。
本题的所有相关文件,包括 ai
程序已经下发到了你的机器上。如果你从 OJ 上重新下载了题目目录,那么在使用下载的 ai
前,你需要运行这条命令:
chmod +x ai
如何测试你的结果
我们提供了测试程序 checker
来测试你的结果。
将测试程序与所有的 .out 文件、所有的 .taskY 及 AI 放在同一目录下,即可运行测试程序。
测试程序会执行 ./ai 1
到 ./ai 10
,因此会覆盖 X.res。在这之后,会通过屏幕输出显示每个点的得分。
样例目标文件0.taskY
Type 45 你好 世界
样例输入文件0.out
Type 45 hello world
样例解释
AI 的第 $45$ 项功能是一个简易的词典,它会将每一行的英文单词翻译成中文。如果词语在词库中不存在,则会翻译成 [未收录]
。AI 使用的所有英文都已被收录在词库中。
目标文件是中文 你好
和 世界
,因此所需的输入文件是对应的英文 hello
与 world
。
提示
请保存好目标文件 X.taskY 和编写的文件 X.out,及时备份,以防误删。
通过自行修改目标文件而获得的得分是无效的。
为了得到最高分,你只需要编写 $10$ 个文件,而不是 $40$ 个。