编辑代码

from itertools import product

# 提供的数字范围,每个位置的集合
provided_digits_str = "X	84265301	78563904	87243596"  # 输入
all_digits = set(range(10))  # 全部数字范围 0-9

# 用空格分隔每个位置,并处理 X 和空值
provided_digits_list = provided_digits_str.split()
while len(provided_digits_list) < 4:  # 补全缺失的位置
    provided_digits_list.append("")

# 构建每个位置的数字集合
provided_digits = [
    all_digits if digits.strip().upper() == "X" else set(map(int, digits))
    if digits.strip() else all_digits
    for digits in provided_digits_list
]

# 初始化字典存储结果
combinations = {i: [] for i in range(5)}  # 0 到 4 (最多 4 个位置)

# 遍历所有可能的组合
for combo in product(all_digits, repeat=4):
    matched_positions = 0
    for i, digit in enumerate(combo):
        if digit in provided_digits[i]:
            matched_positions += 1
    if matched_positions == 4:  # 值 4 的特殊情况:每个位置必须取自提供的数字
        combinations[4].append("".join(map(str, combo)))
    else:
        combinations[matched_positions].append("".join(map(str, combo)))

# 打印结果
for value, combo_list in combinations.items():
    print(f"Value {value}:")
    print(" ".join(combo_list))
    print()