#P1219. L-I-N-G-O: LINGO

    ID: 220 传统题 1000ms 256MiB 尝试: 3 已通过: 1 难度: 10 上传者: 标签>字符串处理游戏逻辑输入验证Greater New York 2002

L-I-N-G-O: LINGO

题目描述

一档新电视游戏节目要求参赛者通过猜测其他五个字母的单词来获取提示,从而推断出一个五个字母的单词。游戏规则如下:节目组会选定一个五个字母的秘密单词。参赛者的目标是猜中这个秘密单词。秘密单词的首字母会被提前公开。参赛者随后可以猜测一个可能匹配秘密单词的五个字母单词。计算机会根据猜测的准确性提供反馈。反馈内容包括:猜测单词中哪些字母与秘密单词中的字母完全匹配且位置正确,哪些字母正确但位置错误,以及哪些字母未出现在秘密单词中。

例如,节目组选择的秘密单词是HELLO“HELLO”。参赛者被告知单词的首字母是H“H”。参赛者根据这一线索猜测可能的单词。假设参赛者猜测的单词是HOLES“HOLES”。游戏计算机会反馈H“H”L“L”在秘密单词中且位置正确,O“O”E“E”在秘密单词中但位置错误,S“S”未出现在秘密单词中。反馈结果会以单行报告的形式呈现给参赛者:

HoLe.HoLe.

大写字母(如H“H”L“L”)表示字母和位置均正确。小写字母(如o“o”e“e”)表示字母正确但位置错误。句点(.“.”)表示字母错误(未出现在秘密单词中)。

你需要编写一个程序来评估参赛者的猜测,并为每次猜测输出单行报告。如果参赛者完全猜中秘密单词,则报告中会显示秘密单词的五个大写字母。

输入格式

输入数据文件包含一个或多个游戏的数据集。每个数据集以空行开头(表示新游戏的开始)。空行后的第一行是秘密单词。数据集中剩余的行代表参赛者的猜测;猜测次数可能过多或过少。秘密单词由五个大写字母组成。但需要检查参赛者的猜测是否有效:有效猜测必须由五个大写字母组成。当输入的秘密单词为LINGO“LINGO”时,程序终止(即游戏停止,程序结束,不再进行后续猜测)。

输出要求

每个游戏的输出前应有一个空行(终止情况除外)。首行状态报告为秘密单词的首字母加四个句点。对于每次猜测,输出该猜测的单行状态报告。若猜测无效,则重复上一次的状态报告。如果猜测完全匹配秘密单词,则该游戏结束,程序继续处理下一个游戏。参赛者最多猜测六次;若第六次仍未猜中或猜测次数用尽,则输出小写的秘密单词并继续下一个游戏。

HELLO
HOLES
HAPPY
HELMS
HELLO
HELPS

PARTY
PARKS
PARES
PARIS
PONDER
PATTY
PUNTS
PARTY

HELIX
HeLIX
HELIX

LINGO
H....
HoLe.
H....
HEL..
HELLO

P....
PAR..
PAR..
PAR..
PAR..
PA.TY
party

H....
H....
HELIX

来源

Greater New York 2002程序设计竞赛