如果我理解正确,给定一个字符串,您想突出显示与该字符串匹配的骰子的一条路径。有时有几种可能的选择,因此添加一个字母可能会完全改变突出显示的内容。在这里保留前一个子字符串的结果可能是一个好方法,所以我们不必重新开始。那么一个合理的做法是计算所有可能的路径。
给定字符串 s 的答案将是路径列表,其中路径是网格坐标列表。每条路径都是您可以合理突出显示的内容,因此您只需突出显示第一个路径。向字符串添加字母时,您会找到可以扩展的路径并删除无法扩展的路径。
恐怕我不知道怎么写vb代码。由于您要求提供伪代码,因此这里有一些类似 Python 的粗略伪代码。我将 boggle 网格编码为 16 个项目的列表。neighbors(x) 函数返回相邻位置的列表(边缘情况除外,即 [x-1, x+1, x-4, x+4])。
def firstLetter(typed):
answer = []
for pos in range(16): if grid[pos]==typed: answer += [pos]
return answer
def addletter(partialanswer, typed):
answer2 = []
for partial in partialanswer:
for neighbor in neighbors(partial[-1]):
if grid[neighbor]==typed:
# partial+[neighbor] is a list. answer2 is a list of such lists.
answer2 += partial + [neighbor]
return answer2
例如,如果玩家键入“go”,则 (a) 玩家键入“g”,代码调用 firstletter(“g”) 并获取网格中包含“g”的位置的列表“答案” . 突出显示,比如说,第一个。(b) 玩家键入“o”,代码调用 addletter(answer, "o") 并获取网格中显示“go”的路径列表。再次强调第一个。