【发布时间】:2011-05-14 02:45:52
【问题描述】:
我正在尝试生成所有可能的键盘序列(现在只有 7 位长度)。例如,如果移动键盘如下所示:
1 2 3
4 5 6
7 8 9
0
一些可能的序列可以是:
123698
147896
125698
789632
要求数字的每个数字都应该是前一个数字的邻居。
这是我计划开始的方式:
关于邻居的信息从一个小键盘到另一个小键盘变化,所以我们必须像这样对其进行硬编码:
neighbors = {0: 8, 1: [2,4], 2: [1,3,5], 3: [2,6], 4: [1,5,7], 5: [2,4,6,8], 6: [3,5,9], 7: [4,8], 8: [7,5,9,0], 9: [6,8]}
我将遍历所有数字,并将可能的邻居之一附加到它,直到达到所需的长度。
编辑:更新邻居,不允许对角线 编辑 2:数字可以重复使用
【问题讨论】:
-
那么,您的问题是什么?你似乎理解了这个问题,并且你已经开始着手解决了。你有什么需要帮助的?作为一个可能的提示,请注意可以通过计算所有 6 位序列然后将所有可能的下一步移动添加到每个序列来找到所有 7 位序列。通过计算所有的5位序列可以找到所有的6位序列...
-
你和你的邻居很矛盾。您表明 0 只有 1 个邻居,而 1 有 3 个。您是否计算对角线?如果是这样,2 应该有 5 个邻居,如果不是,1 应该只有 2 个邻居,等等。
-
类似于stackoverflow.com/questions/2893470/…,除了邻居的定义不同。
-
感谢 Jeff B 的更正,不包括对角线。变了!
-
数字可以在给定的序列中多次使用,还是像 Boggle 一样,每个只能使用一次?