我正在为编码训练营做一个 BoggleBoard 游戏,其中包括一个功能来获取单词并检查它们是否存在于板上。我检查单词是否存在的方法是创建我所谓的“邻接矩阵”(我知道这不是实际的邻接矩阵,这是我想出的,而是通过字母的实际位置链接起来的我正在寻找)。3x3 网格的想法是:
0 | 1 | 2
3 | 4 | 5
6 | 7 | 8
对应的“邻接矩阵”为:
[ [1,3,4],
[0,2,3,4,5],
[1,4,5],
[0,1,4,6,7],
[0,1,2,3,5,6,7,8],
[1,2,4,7,8],
[3,4,7],
[3,4,5,6,8],
[4,5,7]
]
这个想法是,我不必实际在板上定位单词,而是创建一个与单词字母长度相对应的单独数组。单词的每个字母在数组中都有一个数组,显示单词出现在板上的所有位置的索引。然后我基本上检查每个邻接矩阵与当前字母相邻的单元格是否与以下字符的位置共享一个索引。
示例:板:
C | 交流电
| 吨
查询词语:猫
letter_locations = [[0,2],[1],[3]]
Adjacency matrix =
[[1,2,3],
[0,2,3],
[0,1,3],
[0,1,2]]
第一个字符的索引 C = 0
- 与索引 0 相邻的单元格 = 连接 [1,2,3] 和 [0,1,3] => [0,1,2,3]
- 字母 A 出现在 0 中,1,2,3? 是
- 继续
下一个字符 A 的索引 = 1
- 与索引 1 相邻的单元格 = 0,2,3
- 字母 T 出现在 0,2,3 中的任何一个?是
找到字
我目前将游戏设置为 4x4 游戏网格,并在邻接矩阵中硬编码。我想看看是否有一种方法可以根据用户输入使游戏大小成为棋盘,并根据棋盘的大小动态创建邻接矩阵。这可能吗?
(我知道这不是一个实际的邻接矩阵,这是我想出的,而是通过我正在搜索的字母的实际位置链接起来的。)