#M19. Wordle

Wordle

Background

这是一道交互题。

Description

你要玩一个 Wordle 游戏。并进行高达 100100 轮的猜单词挑战。在这个游戏的每一轮中,系统会随机指定一个词库(你可以在题目文件中下载它)中的五字母单词,并且给出首字母,你需要写一个程序去猜测这个单词是什么,每轮猜测不超过五次。猜测的规则如下:

  1. 你猜测的单词必须在词库中存在
  2. 每次猜测后,若你本次猜测与答案单词完全相同,猜测成功,本轮猜单词结束。若这不是第 100100 轮的话,则开启下一轮。
  3. 每次猜测后,若你猜测与答案不同,系统将会给出提示。你猜的单词的每个字母将会被标记成 c,e,n 三个类别中的一个,分别表示:这个字母存在且对应位置正确(correct);这个字母存在,但位置不是你猜测的这个位置(exist);这个字母在单词中不存在(not exist)。请注意如下标记字母方案的细节:
    • 优先标记 c 原则:标记为 e 时,说明这个字母存在且答案在本次猜测的单词中未被标记c 的位置上有这个字母。例如答案为 eight\texttt{eight},猜测 eager\texttt{eager},标记结果为 cncnn 而不是 cncen.
    • e可重复指代原则:若某个字母在答案单词只存在一个,但是猜测单词的多个与答案不同的位置上都有这个字母,所有的字母都会被标记。例如答案为 eager\texttt{eager},猜测 adapt\texttt{adapt},标记结果为 enenn 而不是 ennnn 也不是 nnenn.

请注意,即使你的猜测结果中,历史猜测里每个位置都曾被标记过 c,也不会直接判定为猜测成功。只有你猜测和答案一样的单词,也就是五个位置在一次猜测结果中都被标记为 c,系统才会判定你的猜测成功。例如答案为 eager\texttt{eager},你先后猜测了 eagle\texttt{eagle}eater\texttt{eater},尽管每个位置都在至少一次猜测中被标记为 c,但系统不会判定你猜对从而结束,只有你猜的单词就是 eager\texttt{eager} 时才会结束。

在这样的高达 100100 轮的猜单词挑战中,对于每次猜测挑战,进行如下的分数计算:

  • 猜测过程中某次猜测不合法(例如猜测单词不在词库内)会强制结束本轮猜单词,记 00 分。
  • 第一次猜测猜对,记 150150 分。
  • 第二次猜测猜对,记 135135 分。
  • 第三次猜测猜对,记 100100 分。
  • 第四次猜测猜对,记 9090 分。
  • 第五次猜测猜对,记 8585 分。
  • 五次均猜错会强制结束本轮猜单词,记 00 分。

因为手动连续玩 100100 轮猜单词挑战比较废人,你要写一个代码实现。你在本题的成绩为 100100 轮的得分的平均值,若不小于 100100 分,则视为 100100 分,评测结果为 AC.

请注意,本题只有一个测试数据点,在这个测试数据点内进行 100100 轮猜单词挑战,所以 TLE,RE,MLE 等程序运行产生的硬错误会使此题记 00 分,而不是当前猜测所在的轮次记 00 分。

Format

在猜测开始之前,你需要输入 88698869 行,每行一个五个字母的小写英文单词,表示词库。随后进入 100100 轮猜单词过程,每一轮的过程如下:

在一轮的开头,你输入一行一个字母,表示要猜测的单词的首字母。随后你可以开始你的猜测。

你可以以如下方式提出你的猜测:

  • xxxxx,即直接输出一个长度为五的在词库内的单词。

每当你进行一次猜测后,请立即刷新输出流。刷新输出流的方式如下:

  • Python 语言中,在 print 中指定 flush=True,即 print(...,flush=True).
  • C/C++ 语言中,使用 fflush(stdout);.

进行猜测后,系统会先返回一个数表示这是你这一轮的第几次猜测,特别地,如果返回的数为 1-1,说明你的猜测不合法,本轮猜单词结束并开始下一轮猜单词。若返回的数不是 1-1,则保证是 1,2,3,4,51,2,3,4,5 中的一个,这种情况下,系统在下一行返回对你猜测的单词的标记情况(一行长度为五的,只含 c,e,n 的字符串)。若这是第五次猜测,或者系统返回的字符串为 ccccc,说明本轮猜单词结束,开始下一轮猜单词。

Samples

下面是一种可能得交互情况,由于词库较大,此样例输入中忽略输入词库的部分。类似的,本样例中,考虑进行了两轮猜单词的情况,而不是 100100 轮。

... (省略 8869 行的词库)
p
1
ccnnn
2
ccnnn
3
cccnn
4
ccccc
a
1
cnnnn
2
eecen
3
ccccc
paper
paths
panda
panic
aargh
paper
apple

Limitation

30s, 256MiB.

保证交互库不是自适应的。换句话说,100100 轮猜单词的答案会在一开始就随机确定好,随机方式为对于每一轮,在词库中等概率随机地选择一个词作为答案。可能出现两轮猜测答案相同的情况,但交互库不会根据你的猜测过程或算法逻辑动态构造或调整任意轮次的答案。