gpt4 book ai didi

vb.net - 在 Boggle board 上查找单词的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:05:16 25 4
gpt4 key购买 nike

我正在用 vb .net 构建一个猜谜游戏。现在,我的骰子是一个二维数组 (0,0 0,1) 等...

我想让它做的是,当我输入单词时,它会使用 button(x,y).docclick sub 突出显示它。现在我的实现找到第一个字母,然后不断尝试每个字母,直到它满足 8 个角条件(即它与最后一个相邻),但这并不总是有效。如果板上有 2 个“G”,而我想要底部的一个,这将不起作用。有人能给我一个需要发生什么的伪代码的例子吗?我被难住了将近 6 个小时试图弄清楚这一点。谢谢

最佳答案

如果我理解正确的话,给定一个字符串,您想突出显示与该字符串匹配的通过骰子的一条路径。有时有多种可能的选择,因此添加一个字母可能会完全改变突出显示的内容。保留前一个子字符串的结果可能是一个好方法,这样我们就不必重新开始。那么合理的做法是计算所有可能的路径。

给定字符串 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”的路径列表。再次突出显示第一个。

关于vb.net - 在 Boggle board 上查找单词的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1236772/

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