algorithm - 这个拼字游戏算法中的 "anchors"到底是什么?

标签 algorithm wordsearch

我正在尝试实现这个算法:http://www.cs.cmu.edu/afs/cs/academic/class/15451-s06/www/lectures/scrabble.pdf但我就是无法弄清楚这些 anchor 方 block 到底是什么(首先在 3.1.2 中提到,然后在 3.3 中提到)。

我知道它们的候选者都是与板上已有的相邻的空方 block ,但不知道我到底应该选择哪个。

另外,我不知道为什么左侧部分的所有方 block 都有琐碎的交叉检查(意味着每个字母都可能放在那里),而 anchor 总是有不平凡的交叉检查。这种情况怎么办:

_._._._
_._.x.A
_._._._

_ 是空方 block ,x 是 anchor ,A 是板上已有的字母 - 为什么在这种情况下我需要检查 x 进行交叉检查,而它显然不需要它?

最佳答案

根据拼字游戏的规则,您的单词必须连接到或锚定在板上的现有单词。现在,当我们一次查看一行时,存在三种类型的 anchor :

  • 平铺在同一行中字母的左侧,
  • 平铺在同一行中字母的右侧,
  • 并与当前行上方或下方的行中的字母相邻平铺。

如果我们将一个字母放在与上方或下方行中的字母相邻的 anchor 上,我们也必须用这些字母形成一个有效的单词,从而对该 anchor 允许的字母施加额外的约束。当使用与当前行中的字母相邻的 anchor 时(并且),我们可以放置在该图 block 上的字母仅受我们要在当前行中形成的单词的限制,因此除了实际的构词算法之外不需要其他检查。

这意味着,在您的示例中,实际上对tile x 上的字母没有额外的限制。只需找到一个从 x 向左延伸的前缀,与字母 A 形成一个有效的单词(或更长的前缀)。

您可能还想查看 Udacity 类(class)“Design of Computer Programs”,他们在第 6 单元中讨论了拼字游戏解决算法。

关于algorithm - 这个拼字游戏算法中的 "anchors"到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12329813/

相关文章:

algorithm - 动态迷宫突变

algorithm - 后序图遍历?

c - 替换文本中间的特定单词

c - C中的for循环错误

javascript - 您将如何在单词搜索解算器中实现垂直单词查找?

c - 从 C 中的数组中删除零项

algorithm - 最大重叠点

java - 使用 Puzzle 并弄清楚如何修复越界错误

java - 4x4 单词网格 - Java

algorithm - 为什么代码在 Codility 测试用例中返回负值?