You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python多层嵌套循环简化 数字谜题暴力求解代码优化咨询

数字谜题暴力枚举代码优化咨询

问题说明

我需要求解一道数字谜题:找到所有满足 ABCD * 3 = EFGHI 的数字组合,约束条件如下:

  • A、B、C、D、E、F、G、H、I 共9个数字互不重复
  • 所有数字取值范围为0-9,且均不能等于3

谜题的竖式形式为:

****
  ×   3
  ------
   *****

所有*位置的数字满足上述约束,乘数3为题目固定值。

初始实现

我最初通过9层嵌套循环写了暴力枚举的版本,代码如下:

# 谜题形式: ****
#         X   3
#       = *****
# 要求所有*代表的数字互不重复,取值为0-9且不含3(3为固定乘数位)
import time
t1 = time.time()
occurence = 0
for a in range(0,10):
    if a == 3 : continue    
    tn = time.time()
    delta = tn - t1
    # 要求a,b,c,d,e,f,g,h,i为0-9范围内互不重复、且不等于3的数字
    for b in range(0,10):
        if a == b or b == 3 : continue
        
        for c in range(0,10):
            if a == c or b ==c or c == 3 : continue
            for d in range(0,10):
                if d==a or d==b or d==c or d == 3 : continue
                for e in range(0,10):
                    if e==a or e==b or e==c or e==d or e == 3: continue
                    for f in range(0,10):
                        if f ==a or f==b or f==c or f==d or f==e or f == 3: continue
                        for g in range(0,10):
                            if g ==a or g==b or g==c or g==d or g==e or g==f or g == 3: continue
                            for h in range(0,10):
                                if h ==a or h==b or h==c or h==d or h==e or h==f or h==g or h == 3: continue
                                for i in range(0,10):
                                    if i == a or i==b or i==c or i==d or i==e or i==f or i==g or i==h  or i == 3: continue
                                    first = 1000*a + 100*b + 10*c + d
                                    result = 10000*e + 1000*f + 100*g + 10*h + i
                                    if (first *3 == result):
                                        # 找到有效解
                                        occurence +=1
                                        print(first, "* 3 =", result)
                                        t2 = time.time()
print(occurence, "个有效结果")
print(t2-t1, "秒")

这个版本嵌套层级太深,代码冗余度很高。

咨询诉求

我认为可以借助列表、排列组合相关的Python特性大幅精简这段代码,希望得到可行的优化方案。


内容的提问来源于stack exchange,提问作者jolrael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 16:54:36