使用Python脚本枚举24点答案,去除冗余括号,效率没有Ruby版本的好,可能因精度的关系,和其它人些的答案数目不一致,记录之。

# -*- coding:gbk -*-

import itertools as itt

import re

nums = [7, 6, 4, 8]

ops = ['+', '-', '*', '/']

levels = [0, 1, 2]

def simplest(exprstr):

patterns = [re.compile(r"\((\(.+)\)(.+)")\

,re.compile(r"\((.+\))\)(.+)")\

,re.compile(r"(.+)\((\(.+)\)")\

,re.compile(r"(.+)\((.+\))\)")\

,re.compile(r"(.+)\(([^\)]+)\)(.+)")\

,re.compile(r"\((.+)\)(.+\(.+\))")\

,re.compile(r"(\(.+\).+)\((.+)\)")]

rl = [exprstr,exprstr.replace("(","").replace(")","")]

for p in patterns:

m = p.match(exprstr)

if m is not None:

rl.append("".join(m.groups()))

rl.sort(key = len)

for r in rl:

if abs(eval(r) - 24.0) < 1e-10:

return r

def fmtexpr(operand, operators, priority):

i = [i for i, x in enumerate(priority) if x == max(priority)].pop(0)

operand[i] = "({}{}{})".format(operand[i],operators.pop(i),operand.pop(i + 1))

priority.pop(i)

return operand.pop(0) if len(priority) == 0 else fmtexpr(operand,operators,priority)

def check24p(num, op, level):

numfloat = [float(n) for n in num]

return fmtexpr(numfloat, op, level)

answer = set([])

ai = 0

for num in itt.permutations(nums, r = 4):

for op in itt.product(ops, repeat = 3):

for level in itt.permutations(levels, r = len(levels)):

exprstr = check24p(list(num), list(op), list(level))

try:

if abs(eval(exprstr) - 24.0) < 1e-10:

ai = ai + 1

exprstr = simplest(exprstr[1:-1])

answer.add(exprstr.replace(".0",""))

except ZeroDivisionError:

continue

print("共{}种解法,化简后剩余{}种解法:".format(ai, len(answer)))

for a in answer:

print("我答24点 " + a)

python24点计算器_24点计算器Python脚本相关推荐

  1. arcmap中添加python脚本_基于Python脚本的ArcMap字段计算器分类赋值

    因为出差等等缘由,又没能很好的坚持记录博客,今天回来了,继续记录所学吧.python ArcMap中提供了"字段计算器工具",实际上就是对Sql语句进行了可视化封装,造成了一个具备 ...

  2. 新版个人所得税计算python_2019年新税率工资计算器(python脚本) | linux系统运维...

    #!/usr/bin/evn python # coding=utf-8 # 2019年新税率个人所得税计算器,本脚本仅供学习 # blog: http://www.linuxyw.com # aut ...

  3. ArcGIS使用字段计算器python脚本整理三规合一图斑

    最近试着使用字段计算器内的python脚本整理图斑,蹒跚学步,做下记录. 1.用地代码与名称转换 1.1城规用地代码CGYDDM转用地名称CGYDMC 做一个python字典再索引即可(码齐这些分类还 ...

  4. arcgis中字段计算器使用python-ArcGIS使用字段计算器python脚本整理三规合一图斑

    最近试着使用字段计算器内的python脚本整理图斑,蹒跚学步,做下记录. 1.城规用地代码CGYDDM转用地名称CGYDMC 做一个python字典再索引即可(码齐这些分类还挺累..) list = ...

  5. arcgis字段计算器赋值_基于ArcGIS的python编程 18、在字段计算器中使用Python脚本

    很久没有更新专栏了,趁着五一劳动节,刚好有时间"劳动"一下,更新一下专栏的文章.接下来的文章是关于在ArcMap中的字段计算器中使用Python脚本:字段计算器中可以使用的脚本有两 ...

  6. 24点计算器Python脚本

    使用Python脚本枚举24点答案,去除冗余括号,效率没有Ruby版本的好,可能因精度的关系,和其它人些的答案数目不一致,记录之. # -*- coding:gbk -*-import itertoo ...

  7. gis属性表怎么导成excel_使用Python脚本将Excel表批量赋值到ArcGIS属性表

    现需要将Excel表信息批量赋值(不是挂接)到Shp文件的属性表,两张表的字段.记录数一模一样,至于为什么会出现这样的问题,咱也不敢问,只有想个法子把它搞定! 原始的Excel信息表共57列,总共3万 ...

  8. arcgis python脚本筛选与线共边的面_ArcGIS公共函数Python脚本,Arcgis,常用,功能

    Arcgis常用功能 Python脚本 对一些常用功能的python脚本进行总结,方便以后直接调用. 1. 根据属性值删除行 arcpy.MakeFeatureLayer_management(out ...

  9. Arcgis常用功能 Python脚本

    Arcgis常用功能 Python脚本 对一些常用功能的python脚本进行总结,方便以后直接调用. 1. 根据属性值删除行 arcpy.MakeFeatureLayer_management(out ...

最新文章

  1. with语句和上下文管理器
  2. mysql 约束 域_MySQL-约束
  3. c#(winform)中ComboBox和ListBox添加项完全解决
  4. python网络通信框架_Python运维-Socket网络编程 (1)
  5. 差分能量分析介绍(一)
  6. sysbench 压测 详解
  7. [c#]RabbitMQ的简单使用
  8. 云计算体系结构中soa构建层_云计算的服务模式及技术结构
  9. 就算忘了自己也忘不了你
  10. 华为云GaussDB(for openGauss)商用啦!
  11. Kafka : KafkaProducer Closing the kafka producer with timeoutMillis
  12. python oracle query,python链接oracle/plsql数据库 ,查询功能(query) 用cursor fetchall
  13. php长按图片保存mui,Vue+mui实现图片的本地缓存
  14. Fiddler工具工作原理
  15. 【开发环境】 irun(ncverilog)无法dump fsdb波形问题解决方法
  16. Silverlight 2 Beta 1学习资源
  17. python函数参数生成器_python函数补充、生成器、迭代器
  18. JAVA算法: 给定一个整数转换成对应的罗马字符(Integer to Roman)
  19. (XWZ)的python学习笔记Ⅳ——错误、调试和测试
  20. uni-app的h5/小程序/app 网络请求,解决本地环境和生产环境网络请求问题

热门文章

  1. SpringBoot程序排除@Configuration配置类
  2. 文琼书斋 v3.1 绿色
  3. vivo X9i的Usb调试模式在哪里,开启vivo X9iUsb调试模式的方法
  4. [刷题]2017百度之星资格赛 - 度度熊与邪恶大魔王
  5. 英特尔大师挑战赛燃爆斗鱼直播节,华硕ROG热血助阵
  6. 腾讯、字节、蘑菇街、阿里实习生面经(面试记录)(2)
  7. 梦幻西游手游经验任务链计算机,梦幻西游手游跑环任务详解 刷经验利器
  8. 孝经白话:五刑章第十一
  9. [Unity]摄像机动态人物头像amp;截图amp;TargetTexture问题
  10. 计算机电脑照片大小,电脑上怎么调整照片kb