繁体   English   中英

在Boggle板上查找单词的算法

[英]Algorithm to find word on Boggle board

我正在vb .net中建立一个炫目游戏。 现在,我的骰子是二维数组(0,0 0,1)等...

我想要做的是,当我输入单词时,它会使用button(x,y).doclick子高亮显示它在板上。 现在,我的实现找到第一个字母,然后继续尝试每个字母,直到它满足8个转角条件(即与最后一个字母相邻),但这并不总是有效。 如果板上有2个“ G”,而我想要最下面的一个,那么这将不起作用。 有人可以给我一个需要发生的伪代码的例子。 为了解决这个问题,我已经迷迷了近6个小时。 谢谢

如果我理解正确,给定一个字符串,您要突出显示与该字符串匹配的骰子路径。 有时有几种可能的选择,因此添加字母可能会完全更改突出显示的内容。 在这里保留上一个子字符串的结果可能是一个很好的方法,因此我们不必从头开始。 那么,要做的合理的事情就是计算所有可能的路径。

给定字符串s的答案将是路径列表,其中路径是网格坐标的列表。 您可以合理地突出显示每个路径,因此只需突出显示第一个即可。 在字符串中添加字母时,会找到可以扩展的路径,并删除无法扩展的路径。

恐怕我不知道如何编写VB代码。 由于您要求使用伪代码,因此这里有一些类似python的粗糙伪代码。 我将沼泽网格编码为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”的路径列表。 同样,突出显示第一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM