如何打印到文件输出(除了查找)一组 12 行的所有可能状态
How to print to file output (in addition to finding) all possible states of a set of 12 lines
我有 12 行(包括 | 之前的数字)。每行可以包含 1 和最大值之间的自然数,最大值为 12,参考 12 行。我想查找并打印这 12 行可能处于的所有可能状态。以下 3 个状态示例。
1 | 1 2 3 4 5 6 7 8 9 10 11 12
2 | 1 2 3 4 5 6 7 8 9 10 11 12
3 | 1 2 3 4 5 6 7 8 9 10 11 12
4 | 1 2 3 4 5 6 7 8 9 10 11 12
5 | 1 2 3 4 5 6 7 8 9 10 11 12
6 | 1 2 3 4 5 6 7 8 9 10 11 12
7 | 1 2 3 4 5 6 7 8 9 10 11 12
8 | 1 2 3 4 5 6 7 8 9 10 11 12
9 | 1 2 3 4 5 6 7 8 9 10 11 12
10 | 1 2 3 4 5 6 7 8 9 10 11 12
11 | 1 2 3 4 5 6 7 8 9 10 11 12
12 | 1 2 3 4 5 6 7 8 9 10 11 12
1 | 1 2 3 4
2 | 1 2 3 4 5 6 7 8 9 10 11 12
3 | 1 2 3 4 5 6
4 | 1 2 3 4 5 6 7 8 9 10 11 12
5 | 1 2 3 4 5 6
6 | 1 2 3 4 5 6 7 8 9 10 11 12
7 | 1 2 3 4
8 | 1 2 3 4 5 6 7 8 9 10 11 12
9 | 1 2 3 4 5
10 | 1 2 3 4 5 6 7 8 9 10 11 12
11 | 1 2 3 4 5
12 | 1 2 3 4 5 6 7 8 9 10 11 12
1 | 1
2 | 1 2 3 4 5 6 7 8 9 10 11 12
3 | 10 11 12
4 | 1 2 3 4 5 6 7 8 9 10 11 12
5 | 1 2 3 4 5 6 7 8 9 10 11 12
6 | 7 8 9 10
7 | 5 6 7 8 9 10 11 12
8 | 1 2 3 4 5 6
9 | 3 4 5 6 7
10 | 1 2 3 4 5 6
11 | 1 2 3 4 5 6 7 8 9 10 11 12
12 | 10 11 12
我不知道这是否适合我的问题,也许我正在寻找的答案是一个 python 脚本,如果你能指导我,谢谢你。
我在Python中知道的唯一组合方法(但还不够)是下面的脚本
import sys
from itertools import chain, combinations
def powerset(iterable):
"powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
s = list(iterable)
return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
file = open('output.txt', 'a')
stdout = sys.stdout
sys.stdout = file
print(list(powerset("1234567989")))
sys.stdout = stdout
file.close()
我想我需要使用 for loop
,也许有 11 个关系?
注意:在我的理解中,组合总数是12x12 = 8.9161004e+12
我想你的理解可能是错误的。如果我正确理解了可能的组合,我不会计算 12^12
而是 sum(range(1,13))^12
组合。
说明:对于每一行,您有以下可能的组合:
- 如果该行以 1 开头,则有 12 种可能性
- 11如果以2开头,依此类推
- ...
- 1如果以12开头
所以这会给出从 1 到 12 的总和 (sum(range(1,13))
)。然后将它与所有 12 行结合起来,您将获得 12 的幂。
您可以使用嵌套循环打印它们,但您的脚本有时会崩溃:您有一个包含 50714860157241037295616 组合 * 12 行(不包括额外的换行符)的文件,这将是几千艾字节。
我有 12 行(包括 | 之前的数字)。每行可以包含 1 和最大值之间的自然数,最大值为 12,参考 12 行。我想查找并打印这 12 行可能处于的所有可能状态。以下 3 个状态示例。
1 | 1 2 3 4 5 6 7 8 9 10 11 12
2 | 1 2 3 4 5 6 7 8 9 10 11 12
3 | 1 2 3 4 5 6 7 8 9 10 11 12
4 | 1 2 3 4 5 6 7 8 9 10 11 12
5 | 1 2 3 4 5 6 7 8 9 10 11 12
6 | 1 2 3 4 5 6 7 8 9 10 11 12
7 | 1 2 3 4 5 6 7 8 9 10 11 12
8 | 1 2 3 4 5 6 7 8 9 10 11 12
9 | 1 2 3 4 5 6 7 8 9 10 11 12
10 | 1 2 3 4 5 6 7 8 9 10 11 12
11 | 1 2 3 4 5 6 7 8 9 10 11 12
12 | 1 2 3 4 5 6 7 8 9 10 11 12
1 | 1 2 3 4
2 | 1 2 3 4 5 6 7 8 9 10 11 12
3 | 1 2 3 4 5 6
4 | 1 2 3 4 5 6 7 8 9 10 11 12
5 | 1 2 3 4 5 6
6 | 1 2 3 4 5 6 7 8 9 10 11 12
7 | 1 2 3 4
8 | 1 2 3 4 5 6 7 8 9 10 11 12
9 | 1 2 3 4 5
10 | 1 2 3 4 5 6 7 8 9 10 11 12
11 | 1 2 3 4 5
12 | 1 2 3 4 5 6 7 8 9 10 11 12
1 | 1
2 | 1 2 3 4 5 6 7 8 9 10 11 12
3 | 10 11 12
4 | 1 2 3 4 5 6 7 8 9 10 11 12
5 | 1 2 3 4 5 6 7 8 9 10 11 12
6 | 7 8 9 10
7 | 5 6 7 8 9 10 11 12
8 | 1 2 3 4 5 6
9 | 3 4 5 6 7
10 | 1 2 3 4 5 6
11 | 1 2 3 4 5 6 7 8 9 10 11 12
12 | 10 11 12
我不知道这是否适合我的问题,也许我正在寻找的答案是一个 python 脚本,如果你能指导我,谢谢你。
我在Python中知道的唯一组合方法(但还不够)是下面的脚本
import sys
from itertools import chain, combinations
def powerset(iterable):
"powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
s = list(iterable)
return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
file = open('output.txt', 'a')
stdout = sys.stdout
sys.stdout = file
print(list(powerset("1234567989")))
sys.stdout = stdout
file.close()
我想我需要使用 for loop
,也许有 11 个关系?
注意:在我的理解中,组合总数是12x12 = 8.9161004e+12
我想你的理解可能是错误的。如果我正确理解了可能的组合,我不会计算 12^12
而是 sum(range(1,13))^12
组合。
说明:对于每一行,您有以下可能的组合:
- 如果该行以 1 开头,则有 12 种可能性
- 11如果以2开头,依此类推
- ...
- 1如果以12开头
所以这会给出从 1 到 12 的总和 (sum(range(1,13))
)。然后将它与所有 12 行结合起来,您将获得 12 的幂。
您可以使用嵌套循环打印它们,但您的脚本有时会崩溃:您有一个包含 50714860157241037295616 组合 * 12 行(不包括额外的换行符)的文件,这将是几千艾字节。