[英]Python: All possible combinations of a list of numbers (cryptography)
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
是从0到9的check
列表。
此功能完成了第一部分:
例如:
作为输入,如果我的信用卡号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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.