如何打印到文件输出(除了查找)一组 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 行(不包括额外的换行符)的文件,这将是几千艾字节。