You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wordle游戏字母标记逻辑错误求助:重复字母匹配异常

Wordle游戏字母匹配逻辑修复方案

问题根源

原代码仅判断字母是否存在于目标词,未考虑字母的出现次数限制。以目标词vigor(含1个r)、猜测词rover为例:最后一个r已匹配到目标词的正确位置,第一个r没有多余的r可对应,不应标记为r*,需显示原字母r。

修复后代码

hidden_word = "vigor"
print(hidden_word)

def get_guess_result(guess, target):
    result = list(guess.lower())
    target_counts = {}
    # 统计目标词每个字母的出现次数
    for char in target:
        target_counts[char] = target_counts.get(char, 0) + 1

    # 第一轮:标记位置正确的字母,减少对应计数
    for i in range(len(guess)):
        if guess[i].lower() == target[i]:
            result[i] = guess[i].upper()
            target_counts[target[i]] -= 1

    # 第二轮:处理剩余字母,根据剩余计数判断标记
    for i in range(len(guess)):
        # 跳过已经标记为正确的字母
        if result[i].isupper():
            continue
        char = guess[i].lower()
        if char in target_counts and target_counts[char] > 0:
            result[i] = f"{char}*"
            target_counts[char] -= 1
        # 不在目标词的字母保持原样
        else:
            result[i] = char
    return " ".join(result)

counter = 0
max_attempts = 5
user_word = input("Guess the word: ")

while user_word.lower() != hidden_word.lower():
    print(get_guess_result(user_word, hidden_word))
    counter += 1
    if counter >= max_attempts:
        print(f"Sorry, you lose. The answer is: {hidden_word}")
        break
    user_word = input("Guess the word: ")
else:
    print("You win!")

关键修改点

  1. 字母计数统计:用字典target_counts记录目标词每个字母的剩余可用次数,避免重复匹配
  2. 两轮匹配逻辑:
    • 第一轮优先标记位置完全正确的字母,并消耗对应字母的计数
    • 第二轮处理未匹配的字母,只有当目标词还有剩余该字母时才标记为*,否则显示原字母
  3. 逻辑重构:移除原函数中混乱的分支(如循环内判断整词相等、错误的mistakes累加),拆分功能为独立的结果生成函数,代码更清晰易维护

内容的提问来源于stack exchange,提问作者Oleksandr Danulchyk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 00:54:56