list of numbers
的所有可能的组合: 第1部分:
我尝试了以下函数进行迭代:
def makeIters(cc, n):
for i in range(len(cc) - 1, -1, -1):
yield from (cc[:i] + [str(num)] + cc[i+1:] for num in n)
cc
(代表credit_card)是数字list
,n
是check
列表,范围从0到9。
此功能完成了第一部分:
例如:
作为输入,如果我有信用卡号cc = [1, 2, 3]
(始终使用从0到9的清单),
combinations = []
check = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
cc = [1, 2, 3]
for possible_combinations in makeIters(cc, check):
combinations.append(possible_combinations)
print(combinations)
输出将类似于:
ROWS:
A B C
1 2 0 | 1 0 3 | 0 2 3
1 2 1 | 1 1 3 | 1 2 3
1 2 2 | 1 2 3 | 2 2 3
1 2 3 | 1 3 3 | 3 2 3
1 2 4 | 1 4 3 | 4 2 3
1 2 5 | 1 5 3 | 5 2 3
1 2 6 | 1 6 3 | 6 2 3
1 2 7 | 1 7 3 | 7 2 3
1 2 8 | 1 8 3 | 8 2 3
1 2 9 | 1 9 3 | 9 2 3
但是,如果我要查找的电话号码是3 0 1
或3 1 0
或2 2 2
,这将不起作用。
第2部分:
因此,如果要查找此数字,则必须对生成的每个数字执行与该函数相同的操作
第2部分的示例:
有效数字:3 1 0
输入:
check = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
cc = [1, 2, 3]
输出:
为了找到3 1 0
,我们以Row C
为例,它必须应用于每行):**
C | C.d (323)| C.d.a(320)
a. 0 2 3 | 3 2 0 | 3 1 0 valid_number_found
b. 1 2 3 | 3 2 1 |
c. 2 2 3 | 3 2 2 |
d. 3 2 3 | 3 2 3 |
e. 4 2 3 | 3 2 4 |
f. 5 2 3 | 3 2 5 |
g. 6 2 3 | 3 2 6 |
h. 7 2 3 | 3 2 7 |
i. 8 2 3 | 3 2 8 |
j. 9 2 3 | 3 2 9 |
提示:在示例中,我使用cc,长度为3个数字,但是必须找到的数字是lengt 16。