WHICH算法最适合与BOGGLE类似的单词搜索游戏

时间:2014-05-07 06:22:30

标签: algorithm

你们中的一些人可能熟悉称为“BOGGLE"”的游戏。

基本上游戏会显示这样的混乱字母:

asdf  
wcrq  
nwoa  
erdf  

然后你需要在董事会中寻找所有可能的答案 但是我试图开发一个移动游戏 所以这就是我的计划:

我会要求玩家在给定的混乱字母中查找单个单词。

示例:在这些字母中查找单词CROWN

asdf  
wcrq  
nwoa  
erdf  

然后我需要"追踪"这些混乱的字母中的答案CROWN

但我不知道应该如何实施。

我的问题是:

  1. 这些字母会如何自行混乱,然后同时游戏可以保持正确的答案?
  2. 每次玩家追踪正确答案时,下一个"寻找单词"将显示,然后必须出现一组新的混乱字母
  3. 如果玩家追踪正确答案,则下一个"寻找单词"应该立即出现,因此必须遵守时间。
  4. 系统必须检测玩家追踪正确答案的天气。
  5. 注意:
    玩家可以追踪他想要的任何方向,只要他不会跳到一封信中去寻找这个词。"

    你能建议算法和方法或数据结构来实现吗?

    我正在寻找使用HTML5,JavaScript和CSS的解决方案。

    示例图片:

1 个答案:

答案 0 :(得分:1)

好吧,我会做iterative deepening分支截止。例如:

1 2 3 4
5 6 7 8
9 0 A B
C D E F

有16个深度1节点[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, A, B, C, D, E, F],您可以从其中任何一个访问邻居。例如,如果选择1:

* 2 3 4
5 6 7 8
9 0 A B
C D E F

深度2节点列表为[[1, 2], [1, 6], [1, 5]],然后检查您的词典是否包含以其中任何一个开头的单词。如果他们没有那么你可以削减分支!这很重要,因为否则会有太多工作要做。假设[1, 2]不存在,您选择了[1, 6]

* 2 3 4
5 * 7 8
9 0 A B
C D E F

深度2节点列表为[[1, 6, 2], [1, 6, 3], [1, 6, 7], [1, 6, A], [1, 6, 0], [1, 6, 9], [1, 6, 5]]。就像之前一样,直到你到达一个没有下一步行动的节点。让我们假设它是[1, 6, 2, 5]。现在你有4个字母长的最长字。之后你会检查你是否得到更长的词。

根据您正在播放的版本,您可能需要调整所拍摄的结果。例如,在某些版本中,如果您的单词长度超过8个字母,则不会获得额外的分数 - 例如:如果您找到前8个字母单词,则无需进一步查看。

我希望这会让你开始。