gpt4 book ai didi

javascript - JavaScript 中的复杂字符串匹配

转载 作者:行者123 更新时间:2023-11-28 01:12:12 25 4
gpt4 key购买 nike

我正在开发一款游戏:http://codepen.io/abdulahhamzic/pen/xVMXQa

游戏由玩家猜测一个单词组成,他们只有五次尝试才能猜对。如果玩家单词中的一个字母在适当的位置,那么它应该变成绿色。如果一个字母在单词中,但不在正确的位置,它应该涂成红色以提示玩家该字母存在,但应该放在单词的其他地方。我使用这部分代码来实现该功能:

if (userWord[i].toUpperCase() == word[i]){
document.getElementsByClassName("letters")[input].children[i].style.background = "green";
}
else if (word.indexOf(userWord[i].toUpperCase()) > -1){
document.getElementsByClassName("letters")[input].children[i].style.background = "red";
}

问题是当玩家输入一个包含两个或更多相同字母的单词并且正确的单词包含较少的字母时,只有在确切位置的字母应该是绿色而其他字母不应该是红色,因为这意味着这封信在那里多次出现。例如:

  • 如果单词是“ABBBB”并且玩家输入“AAAAC”,只有“AAAAC”的第一个“A”应该保持绿色,其他“A”应该保持黄色而不是变成红色。
  • 如果单词是“ABABB”并且玩家输入“ACBAA”,第一个“A”应该保持绿色,只有第二个“A”应该是红色,而不是最后两个“A”都指定单词中只有两个“A”。另外,“B”当然应该是红色的。
  • 如果单词是“ABABA”并且玩家输入“AAAAA”,那么只有第一个、第三个和最后一个“A”应该是绿色的,但其他“A”应该保持黄色而不是变成红色。

所以,这些是一些例子。我想你现在明白了。我真的不知道如何正确地实现这个功能。

最佳答案

  1. 将猜出的单词和想要的单词放在计算字母频率的哈希表(对象)中

例子2:

    actualWord = { a: 2, b: 3}
guessedWord = { a: 3, b: 1, c: 1}
  1. 每次猜测后,同时遍历两个字符串

  2. 如果您匹配的字母,您会将其突出显示为绿色,因为它是正确的字母并且在正确的位置。

  3. 递减哈希表中的两个值(它们匹配且不再考虑)

    actualWord = { a: 1, b: 3}
    guessedWord = { a: 2, b: 1, c: 1}
  4. 如果不匹配,检查哈希表。如果猜出的字母在 actualWord 的哈希表中,它就存在,但位置不对。将其突出显示为红色。两者都减一

    actualWord = { a: 0, b: 3}
    guessedWord = { a: 1, b: 1, c: 1}
  5. 如果查找有效,但实际单词的哈希为 0,则您知道用户输入了太多相同的字母,因此您会将其涂成黄色(我认为)

关于javascript - JavaScript 中的复杂字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37194781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com