如何处理Wordle游戏中的重复字符?现有代码匹配逻辑修复需求
Wordle重复字符反馈逻辑修复
原代码的核心问题是未考虑目标词中字符的出现次数,仅通过"字符是否存在"判断O标记,导致重复字符被错误匹配。以下是修复方案:
修复后的代码
wordle = "woods" user_input = input("Enter guess: ") # 统计目标词中各字符的剩余可用次数 char_available = {} for char in wordle: char_available[char] = char_available.get(char, 0) + 1 feedback = ["-"] * len(wordle) # 第一步:处理位置完全匹配的字符(标记X),消耗对应字符的可用次数 for i in range(len(wordle)): if user_input[i] == wordle[i]: feedback[i] = "X" char_available[user_input[i]] -= 1 # 第二步:处理存在但位置错误的字符(标记O),仅当字符还有可用次数时标记 for i in range(len(wordle)): if feedback[i] == "-": current_char = user_input[i] if current_char in char_available and char_available[current_char] > 0: feedback[i] = "O" char_available[current_char] -= 1 # 输出结果 print() for let in user_input: print(let, end=" ") print() for char in feedback: print(char, end=" ")
逻辑说明
- 统计字符可用次数:先遍历目标词,记录每个字符的出现次数,后续匹配时会逐步消耗这些次数。
- 优先处理精确匹配(X):第一遍遍历先标记所有位置完全正确的字符,每标记一个就减少对应字符的可用次数,避免后续重复匹配。
- 处理位置错误的匹配(O):第二遍遍历仅处理未标记的位置,只有当字符在目标词中还有剩余可用次数时,才标记
O并消耗次数,否则保持-。
验证示例
- 示例1:目标词
woods(仅含1个s),用户输入sassy
第一遍无精确匹配,第二遍第一个s标记O后,s的可用次数变为0,剩余两个s无法匹配,最终反馈为O - - - -,符合预期。 - 示例2:目标词
brass(含2个s),用户输入sassy
第一遍第四个s精确匹配标记X,s的可用次数变为1;第二遍第一个s标记O后次数耗尽,第三个s无法匹配,最终反馈为O O - X -,符合预期。
内容的提问来源于stack exchange,提问作者user22047030
相关产品推荐
相关产品推荐

