【发布时间】:2019-05-10 20:30:20
【问题描述】:
我想编写一个函数,使用以下规则集从标准电话键盘(图 1)生成所有可能的数字:
- 电话号码以数字 2 开头
- 电话号码长度为 10 位
- 每个电话号码中的连续数字被选为国际象棋中的骑士移动
在国际象棋中,马(有时称为马)垂直移动两步,水平移动一步,或者水平移动两步,垂直移动一步。
电话号码中只能使用数字 - 即不允许使用 (#) 和 (*) 键。
该函数必须将电话号码的长度和初始位置作为输入,输出给出唯一电话号码的数量。
我是一个新手,很难构建逻辑。 我尝试按照以下方式进行操作,这绝对不是正确的方法。
def genNumbers(len, initpos):
numb = list('2xxxxxxxxx')
#index 1
numb[1] = 7 or 9
if numb[1] == 7:
numb[2] == 2 or 6
elif numb[1] == 9:
numb[2] == 2 or 4
#index 2
if numb[2]== 2:
numb[3] == 7 or 9
elif numb[2]== 4:
numb[3] == 3 or 9
elif numb[2]== 6:
numb[3] == 1 or 7
#index 3
if numb[3]== 1:
numb[4] == 6 or 8
elif numb[3]== 3:
numb[4] == 4 or 8
elif numb[3]== 7:
numb[4] == 2 or 6
elif numb[3]== 9:
numb[4] == 2 or 4
#index 4
if numb[4] == 8:
numb[5]== 1 or 3
elif numb[4] == 2:
numb[5]== 7 or 9
elif numb[4] == 4:
numb[5]== 3 or 9
elif numb[4] == 6:
numb[5]== 1 or 7
#index 5
if numb[5] == 1:
numb[6]== 6 or 8
elif numb[5] == 3:
numb[6]== 4 or 8
elif numb[5] == 7:
numb[6]== 2 or 6
elif numb[5] == 9:
numb[6]== 2 or 4
#index 6
if numb[6] == 2:
numb[7]== 7 or 9
elif numb[6] == 4:
numb[7]== 3 or 9
elif numb[6] == 6:
numb[7]== 1 or 7
elif numb[6] == 8:
numb[7]== 1 or 3
#index 7
if numb[7] == 1:
numb[8]== 6 or 8
elif numb[7] == 3:
numb[8]== 4 or 8
elif numb[7] == 7:
numb[8]== 2 or 6
elif numb[7] == 9:
numb[8]== 2 or 4
#index 8
if numb[8] == 6:
numb[9]== 1 or 7
elif numb[8] == 8:
numb[9]== 1 or 3
elif numb[8] == 4:
numb[9]== 3 or 9
elif numb[8] == 2:
numb[9]== 7 or 9
return numb
任何帮助将不胜感激!
【问题讨论】:
-
这不仅可能不是正确的方法,而且对计算机程序的工作原理缺乏一些基本的了解。您不能简单地为变量分配一个或另一个值,希望计算机现在能够理解该变量不应具有除这两个之外的其他值...第二:分配是
=,比较是==。除此之外,在所描述的问题上有两个问题:很好的逻辑挑战,但有点奇怪的是没有电话号码会包含5。并且:你应该尝试接触一个叫做recursive functions的概念 -
这是一个很好的关于这个问题的文章,详细讨论了几个解决方案:hackernoon.com/…
标签: python function random generator