当前位置: 首页 > news >正文

DeekSeek 3.2和Qwen 3.5生成的求解24点程序对比

编写python程序,算出1-13的全部4个数字组合(允许重复)加减乘除能够算出24点的组合及对应的表达式,比如1234:1x2x3x4,用A、B、C、D表示10、11、12、13,用圆括号表示运算优先级。用最简的高效语句完成,无需注释。不做别的

fromitertoolsimportproduct,permutations,combinations_with_replacementfromfractionsimportFractiondefsolve_24():ops=['+','-','*','/']numbers=list(range(1,14))results=[]card_map={10:'A',11:'B',12:'C',13:'D'}fornumsincombinations_with_replacement(numbers,4):found=set()fora,b,c,dinset(permutations(nums)):forop1,op2,op3inproduct(ops,repeat=3):expressions=[f'(({a}{op1}{b}){op2}{c}){op3}{d}',f'({a}{op1}({b}{op2}{c})){op3}{d}',f'({a}{op1}{b}){op2}({c}{op3}{d})',f'{a}{op1}(({b}{op2}{c}){op3}{d})',f'{a}{op1}({b}{op2}({c}{op3}{d}))']forexprinexpressions:try:ifabs(eval(expr)-24)<1e-6:disp=exprfork,vincard_map.items():disp=disp.replace(str(k),v)found.add(disp)breakexceptZeroDivisionError:continueiffound:breakiffound:breakiffound:num_str=''.join(card_map.get(x,str(x))forxinnums)results.append(f'{num_str}:{",".join(found)}')returnresultsforlineinsolve_24():print(line)

第一版用eval函数实现效率比较低,继续提示

要求不用eval函数实现,其他要求同上。

fromitertoolsimportproduct,permutations,combinations_with_replacementdefsolve_24():ops={'+':lambdax,y:x+y,'-':lambdax,y:x-y,'*':lambdax,y:x*y,'/':lambdax,y:x/yify!=0elseNone}numbers=list(range(1,14))results=[]card_map={10:'A',11:'B',12:'C',13:'D'}fornumsincombinations_with_replacement(numbers,4):found=set()fora,b,c,dinset(permutations(nums)):forop1,op2,op3inproduct(ops.keys(),repeat=3):f1,f2,f3=ops[op1],ops[op2],ops[op3]try:ifabs(f3(f2(f1(a,b),c),d)-24)<1e-6:expr=f'(({a}{op1}{b}){op2}{c}){op3}{d}'fork,vincard_map.items():expr=expr.replace(str(k),v)found.add(expr)elifabs(f3(f1(a,f2(b,c)),d)-24)<1e-6:expr=f'({a}{op1}({b}{op2}{c})){op3}{d}'fork,vincard_map.items():expr=expr.replace(str(k),v)found.add(expr)elifabs(f2(f1(a,b),f3(c,d))-24)<1e-6:expr=f'({a}{op1}{b}){op2}({c}{op3}{d})'fork,vincard_map.items():expr=expr.replace(str(k),v)found.add(expr)elifabs(f2(a,f3(f1(b,c),d))-24)<1e-6:expr=f'{a}{op1}(({b}{op2}{c}){op3}{d})'fork,vincard_map.items():expr=expr.replace(str(k),v)found.add(expr)elifabs(f1(a,f2(b,f3(c,d)))-24)<1e-6:expr=f'{a}{op1}({b}{op2}({c}{op3}{d}))'fork,vincard_map.items():expr=expr.replace(str(k),v)found.add(expr)except(TypeError,ZeroDivisionError):continueiffound:breakiffound:breakiffound:num_str=''.join(card_map.get(x,str(x))forxinnums)results.append(f'{num_str}:{",".join(found)}')returnresultsforlineinsolve_24():print(line)

再测试Qwen

编写python程序,算出1-13的全部4个数字组合(允许重复)加减乘除能够算出24点的组合及对应的表达式,每行只要输出1个解,比如1234:1x2x3x4,用A、B、C、D表示10、11、12、13,用圆括号表示运算优先级。要求不用eval函数实现, 用最简的高效语句完成,无需注释。不做别的

第一版程序报错,

执行报错, File "C:\d\qw24.py", line 26, in solve r5 = calc(calc(a, calc(b, c, o1), o2), d, o3) File "C:\d\qw24.py", line 5, in calc if op == '+': return a + b ~~^~~ TypeError: unsupported operand type(s) for +: 'NoneType' and 'int',

请改正,不做别的。其他要求不变

fromitertoolsimportproduct,permutations ops=['+','-','*','/']nums=list(range(1,14))defcalc(a,b,op):ifaisNoneorbisNone:returnNoneifop=='+':returna+bifop=='-':returna-bifop=='*':returna*bifop=='/':returna/bifb!=0elseNonedeffmt(n):returnstr(n)ifn<10else'ABCD'[n-10]defsolve():forcomboinproduct(nums,repeat=4):forpinset(permutations(combo)):a,b,c,d=pforo1inops:foro2inops:foro3inops:r1=calc(calc(calc(a,b,o1),c,o2),d,o3)ifr1==24:print(f"{fmt(a)}{fmt(b)}{fmt(c)}{fmt(d)}:(({fmt(a)}{o1}{fmt(b)}){o2}{fmt(c)}){o3}{fmt(d)}");continuer2=calc(calc(a,b,o1),calc(c,d,o2),o3)ifr2==24:print(f"{fmt(a)}{fmt(b)}{fmt(c)}{fmt(d)}:({fmt(a)}{o1}{fmt(b)}){o3}({fmt(c)}{o2}{fmt(d)})");continuer3=calc(a,calc(b,calc(c,d,o2),o1),o3)ifr3==24:print(f"{fmt(a)}{fmt(b)}{fmt(c)}{fmt(d)}:{fmt(a)}{o3}({fmt(b)}{o1}({fmt(c)}{o2}{fmt(d)}))");continuer4=calc(a,calc(calc(b,c,o1),d,o2),o3)ifr4==24:print(f"{fmt(a)}{fmt(b)}{fmt(c)}{fmt(d)}:{fmt(a)}{o3}(({fmt(b)}{o1}{fmt(c)}){o2}{fmt(d)})");continuer5=calc(calc(a,calc(b,c,o1),o2),d,o3)ifr5==24:print(f"{fmt(a)}{fmt(b)}{fmt(c)}{fmt(d)}:({fmt(a)}{o2}({fmt(b)}{o1}{fmt(c)})){o3}{fmt(d)}");continuesolve()

第二版算出了所有解,继续提示

每个4数字组合只要输出一个解,每个组合都按数字大小排序,比如13CD,注意将if r1 == 24改为if abs(r1 -24)<1e-6等,不做别的,其他要求不变,

最终程序如下

fromitertoolsimportcombinations_with_replacement,permutations ops=['+','-','*','/']nums=list(range(1,14))defcalc(a,b,op):ifaisNoneorbisNone:returnNoneifop=='+':returna+bifop=='-':returna-bifop=='*':returna*bifop=='/':returna/bifb!=0elseNonedeffmt(n):returnstr(n)ifn<10else'ABCD'[n-10]defsolve():forcomboincombinations_with_replacement(nums,4):found=Falseforpinset(permutations(combo)):iffound:breaka,b,c,d=pforo1inops:iffound:breakforo2inops:iffound:breakforo3inops:r1=calc(calc(calc(a,b,o1),c,o2),d,o3)ifr1isnotNoneandabs(r1-24)<1e-6:print(f"{fmt(combo[0])}{fmt(combo[1])}{fmt(combo[2])}{fmt(combo[3])}:(({fmt(a)}{o1}{fmt(b)}){o2}{fmt(c)}){o3}{fmt(d)}")found=True;breakr2=calc(calc(a,b,o1),calc(c,d,o2),o3)ifr2isnotNoneandabs(r2-24)<1e-6:print(f"{fmt(combo[0])}{fmt(combo[1])}{fmt(combo[2])}{fmt(combo[3])}:({fmt(a)}{o1}{fmt(b)}){o3}({fmt(c)}{o2}{fmt(d)})")found=True;breakr3=calc(a,calc(b,calc(c,d,o2),o1),o3)ifr3isnotNoneandabs(r3-24)<1e-6:print(f"{fmt(combo[0])}{fmt(combo[1])}{fmt(combo[2])}{fmt(combo[3])}:{fmt(a)}{o3}({fmt(b)}{o1}({fmt(c)}{o2}{fmt(d)}))")found=True;breakr4=calc(a,calc(calc(b,c,o1),d,o2),o3)ifr4isnotNoneandabs(r4-24)<1e-6:print(f"{fmt(combo[0])}{fmt(combo[1])}{fmt(combo[2])}{fmt(combo[3])}:{fmt(a)}{o3}(({fmt(b)}{o1}{fmt(c)}){o2}{fmt(d)})")found=True;breakr5=calc(calc(a,calc(b,c,o1),o2),d,o3)ifr5isnotNoneandabs(r5-24)<1e-6:print(f"{fmt(combo[0])}{fmt(combo[1])}{fmt(combo[2])}{fmt(combo[3])}:({fmt(a)}{o2}({fmt(b)}{o1}{fmt(c)})){o3}{fmt(d)}")found=True;breaksolve()
http://www.jsqmd.com/news/457791/

相关文章:

  • 移远通信 × 圆周率科技:PanoX V5全新亮相,将全景影像能力“装进”日常生活
  • Flutter 组件 geohash_plus 适配鸿蒙 HarmonyOS 实战:高维地理降维,构建纳秒级时空索引矩阵
  • Spring Boot隐式参数注入:代码优雅升级指南
  • linux关键指令无废话
  • 偷偷保存!高效破解压缩包密码的神级软件!
  • 0-MySQL 在 Centos 7环境详细安装过程
  • PAT 乙级 1047
  • Claude Code 保姆级攻略,包含连接vscode/JetBrains(2026)
  • 木下~Linux系统编程之静态库与动态库
  • 多无人机动态避障路径规划研究:基于粒子群优化算法PSO的多无人机动态避障路径规划研究(可以自定义无人机数量及起始点),MATLAB代码
  • 落叶清扫机设计(开题报告+三维图)
  • 基于大数据+Hadoop+深度学习的股票预测系统设计与开发(源码+精品论文+答辩PPT等资料)
  • 基于springboot中小学数字化教学资源管理平台(源码+文档+调试+讲解)
  • 从智能马桶到淋浴房,九牧凭什么持续领跑行业
  • C++核心概念:命名空间与构造析构解析
  • 三进制+钱学森:复杂系统动态平衡的底层同频与工程化实现原则
  • Android Intent.setAction失效报错排查与修复全方案
  • 万字长文实测:对比5款主流论文AI,为何 Scholingo 是最懂中国高校的“降重神器”?
  • 并发编程笔记1
  • 青蛙跳台阶
  • Linux系统编程-数据库-SQLite
  • Flutter —— GetIt、Dio
  • 基于springboot的人事管理系统(源码+文档+调试+讲解)
  • C语言二维数组详解:定义与初始化
  • Claw 批量生成公众号文章实践:一天写 100 篇的工作流复盘
  • 基于大数据+Hadoop+深度学习的酒店评论文本情感分析研究设计与开发(源码+精品论文+答辩PPT等资料)
  • 4个关键步骤解决ComfyUI ControlNet Aux模型下载难题:开源工具配置优化指南
  • 阿姆智创15.6寸工控触摸一体机,赋能工业自动化的硬核终端,源头工厂支持ODM定制
  • 保姆级windows+WSL2(非C盘安装)部署OpenClaw
  • 【问题解决】| 【黑马点评】 | 虚拟机IP总是变动,如何修改成固定IP