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

Python实现Mastermind珠玑妙算游戏颜色匹配逻辑错误排查

Python版Mastermind游戏匹配计数异常问题修复

核心问题说明

你代码的计数逻辑存在两处明确错误,是导致示例场景下颜色对位置不对计数为0的直接原因:

  • 多余的correct_color > prev_curt_color判断:该条件仅在位置正确计数刚增加时才成立,你给出的示例中前两个匹配完成后correct_color固定为2,后续位置的判断永远无法触发elif分支,自然不会统计到错位匹配的颜色。
  • 未处理重复颜色计数和已匹配颜色的排除:直接判断player_guess[i] in color_code的逻辑没有排除已经被统计为位置正确的颜色,也没有考虑同一颜色在密码和输入中的出现次数上限,后续遇到颜色重复次数不一致的场景会出现计数错误。

修复方案

将原代码中统计匹配数量的循环段:

if correct_color != 4:
        for i in range(4):
                if player_guess[i] == color_code[i]:
                        correct_color += 1
                elif player_guess[i] != color_code[i] and player_guess[i] in color_code and correct_color > prev_curt_color:
                        guessed_color += 1
                prev_curt_color = correct_color

替换为以下两段逻辑即可:

# 第一步:先统计位置、颜色全匹配的数量,同时收集未匹配的剩余颜色
correct_color = 0
code_remaining = []
guess_remaining = []
for i in range(4):
    if player_guess[i] == color_code[i]:
        correct_color += 1
    else:
        code_remaining.append(color_code[i])
        guess_remaining.append(player_guess[i])

# 第二步:统计剩余颜色中,颜色正确位置错误的数量,按两边出现次数的最小值统计
guessed_color = 0
for color in set(guess_remaining):
    guessed_color += min(code_remaining.count(color), guess_remaining.count(color))

替换后你给出的测试场景(密码RGRG、输入GRRG)会得到正确结果:位置正确计数为2,错位正确计数为2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 17:27:04