讨论/算法和数据结构/经典游戏 Mastermind 的答案检查算法,如何优雅地实现?/
经典游戏 Mastermind 的答案检查算法,如何优雅地实现?

输入两个相同长度的 string

string guess
string answer

游戏玩法:

  1. 如果一个在 guess 内的字符与一个在 answer 内的字符的位置与值皆相等,则优先将二者匹配。
  2. 如果一个在 guess 内的字符与一个在 answer 内的字符仅值相等,而位置不相等,则将二者匹配。
  3. 任何已匹配的两个字符不会再进入匹配。

输出一个长度为 2 的 int 数组 response ,第一项是上述步骤一的匹配数量,第二项是上述步骤二的匹配数量。

例子一:

guess:    "1234"
answer:   "2344"
response: {1, 2}

answer[3]guess[3] 先进行位值皆等的匹配,guess[3] 无法再与 answer[2] 进行匹配。

例子二:

guess:    "12211"
answer:   "42113"
response: {2, 1}

answer[1]guess[1] 先进行位值皆等的匹配,answer[1] 无法再与 guess[2] 进行匹配。
answer[3]guess[0] 进行了仅值相等的匹配,answer[3] 无法再与 guess[4] 进行匹配。

参考:完整游戏 wiki

展开讨论

299. 猜数字游戏 应该就是这道题吧。

我的题解