Squirtle(杰尼龟)设计了一个名为 Squirdle 的猜单词游戏。在游戏中,Squirtle 心中想好了一个由 $5$ 个字母组成的字符串(其中每个字母都是互不相同的英文小写字母 a-z)。Squirtle 给你 $10$ 次猜测的机会来猜出这个单词。在每次猜测后,他会告诉你猜测的每个字符是在正确的位置、错误的位置,还是根本不在字符串中。请在最多 $10$ 次猜测内猜出 Squirtle 的单词!
交互
这是一个交互式问题。你将通过标准输入和输出与 Squirtle 进行交互。
要猜测一个字符串 $s$,请按以下格式向标准输出打印一行:
? s(其中 $s$ 是一个仅由英文小写字母组成的 $5$ 字符字符串)
Squirtle 将通过标准输入回复一行:一个由数字 0、1 和 2 组成的长度为 $5$ 的字符串。每个位置上的数字为你提供了关于猜测 $s$ 中对应位置字符 $c$ 的信息:
0— $c$ 不在字符串中。1— $c$ 在字符串中,但处于不同的位置。2— $c$ 在字符串中,且处于完全相同的位置。
当收到字符串 22222(这意味着你已经正确猜出了 Squirtle 的单词)或当你用完所有 $10$ 次猜测时,交互结束。你的程序在做出正确猜测后应当立即终止。
在每次猜测后,请确保输出一个换行符并刷新输出流。为此,请使用:
- C 中的
fflush(stdout); - C++ 中的
cout.flush(); - Java 中的
System.out.flush(); - Python 中的
stdout.flush()。
样例
样例输入 1
00000 20201 22222
样例输出 1
? frogs ? zebra ? zubat
说明
在样例交互中:
- 你的程序输出
? frogs。 - 评测机输入
00000,表示f,r,o,g,s都不在目标单词中。 - 你的程序输出
? zebra。 - 评测机输入
20201,表示z和b在正确的位置,a在单词中但位置不对,e和r不在单词中。 - 你的程序输出
? zubat。 - 评测机输入
22222,表示你已成功猜出单词,程序随后终止。