我编码类似游戏BOGGLE当玩家应该发现由随机字母一个大的字符串中的单词。
例如,有五个数组与字符串内是这样的。 五排,由六个字母每一个:
AMSDNS
MASDOM
ASDAAS
DSMMMS
OAKSDO
所以,游戏的用户应该使用可用时考虑以下限制和规则的字母组成单词:
- 它不可能重复相同的字母,使一个字。 林谈论的“物理”信,在游戏中是一个骰子。 它不可能使用相同的骰子两次或更多,使这个词。
- 它不可能“跳”任何字母作字。 这使单词的字母必须是连续的。
- 用户能够以自己想要的任何方向继续移动,没有任何限制比上面提到的两个。 因此,它可能要到顶部,然后底部,然后在右边,然后再次顶,等等。 因此,运动寻找的话可能会莫名其妙地不稳定。
我想知道如何去通过所有的字符串进行单词。 要知道的话我也会用一个txt文件文字。
我不知道如何设计一个算法,它能够执行搜索,特别是考虑过这个问题,需要找到的话,尊重限制走势飘忽了。
我已经实施的UX,扔骰子,并填补了桌上游戏的逻辑,和所有六个字母骰子的逻辑。
但是,这部分的不容易,我想读你的建议,这一有趣的挑战。
即时通讯使用Python为这个游戏,因为是我使用的代码的语言和我最喜欢的语言。 但是一个算法本身的解释或建议,应该是很好过,独立于语言的。
基本算法很简单。
- 对于每瓦,做到以下几点。
- 开始用空候选词,然后访问当前瓦片。
- 通过以下步骤访问瓷砖。
- 添加瓷砖的位置的信候选词。
- 是候选词的已知词? 如果是这样,将其添加到发现的单词列表。
- 是候选词的前缀任何已知的字?
- 如果是这样,对于尚未访问过,形成候选词,访问它(即递归)各相邻瓦片。
- 如果不是这样,原路返回(停止审批新的瓷砖这个候选词)。
为了使事情问这个问题的时候流畅的运行“是这个字词在我的字典里前缀”,考虑代表你的字典作为一个线索 。 尝试提供这两个词和前缀快速查找倍。
您可能会发现一个特里有用-把所有词典单词到特里,然后从惊奇电网再拍特里,只是只要你匹配的词典索引树。
即字典特里:
S->T->A->C->K = stack
\->R->K = stark
\->T = start
格:(简化的)
STARKX
XXXTXX
XXXXXX
格特里结构:(仅示出从S开始 - 开始也会在一种用于ART等)
S->X (no matches in dict Trie, so it stops)
\->T->X
\->A-R->K (match)
| |->T (match)
| \->X
\->C->K (match)
\->X
你可以用GraphViz的可视化的尝试次数喜欢这样 。
文章来源: Which algorithm would fit best to solve a word-search game like “Boggle” with Python