Zynga Scramble 求解器
自动列出 Facebook 游戏 Scramble 中所有可能单词的程序。

引言
这基本上是一个作弊程序,用于玩 Facebook 上的 Scramble 文字游戏。它还可以玩 Word Twist 游戏。
Scramble 游戏就是一个带有字母的方形棋盘。你必须在三分钟内找到尽可能多的单词。你可以从任何字母开始,但只能移动到与当前字母相邻或对角的另一个字母。每个单词也不能重复使用同一个字母。
背景
编写这个程序很有趣。第一个挑战是找到可能的单词列表,或者我称之为字典。我最终从一个在线纵横填字游戏字典中提取了所有单词,我认为 Scramble 程序本身也使用它来显示单词的定义。它每页只显示五十个单词,并且有超过 2000 页。下载所有 105,000 个单词大约花了 35 分钟,当我尝试将所有 105,000 行代码粘贴到我的类文件中时,它崩溃了 Visual Studio。我最终使用 Notepad++ 创建了文件,然后将其添加到项目中。
第二个挑战是尝试找到一种有效的方法来组织棋盘以搜索可能的路径。我首先创建了一个二维棋盘数组,数组中的每个项目包含它的字母,以及它接触的所有方格的列表。然后我遍历每个方格,找到所有以该方格开头的单词。
这是通过首先找到创建长度为 3 的单词的所有可能方式来实现的(此时不关心它是否是有效的单词)。如果该单词在字典中是有效的单词,则将其添加到已找到单词的列表中。如果它可能是较长单词的开头,则搜索它接触的所有其他字母,以查看是否存在其他有效单词或有效单词的开头。它重复此过程以查找棋盘上的所有单词。
Using the Code

第一次启动程序时,将整个字典加载到内存中大约需要 10-15 秒。加载完成后,使用左侧的Textbox
输入棋盘。您可以输入任何大小的棋盘,只要它是正方形即可。Facebook 上的游戏只包含 4x4 和 5x5 的游戏。
输入棋盘后,按下“Go”按钮,所有可能的单词将列在列表框中,或者根据“Use Clipboard”复选框是否选中,每秒复制一个到剪贴板。
关注点
代码本身没有什么太惊人的,只是它有一个包含 105000 行代码的类。我确信有更好的方法可以做到这一点,但是对于这样一个有趣的项目,我并不关心。
我使用这个程序获得了 1553 分,比我在 Facebook 上的任何朋友都多 1400 分。太有趣了。
历史
- 2008 年 11 月 27 日:初始发布