python24点计算器_24点计算器Python脚本
使用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脚本相关推荐
- arcmap中添加python脚本_基于Python脚本的ArcMap字段计算器分类赋值
因为出差等等缘由,又没能很好的坚持记录博客,今天回来了,继续记录所学吧.python ArcMap中提供了"字段计算器工具",实际上就是对Sql语句进行了可视化封装,造成了一个具备 ...
- 新版个人所得税计算python_2019年新税率工资计算器(python脚本) | linux系统运维...
#!/usr/bin/evn python # coding=utf-8 # 2019年新税率个人所得税计算器,本脚本仅供学习 # blog: http://www.linuxyw.com # aut ...
- ArcGIS使用字段计算器python脚本整理三规合一图斑
最近试着使用字段计算器内的python脚本整理图斑,蹒跚学步,做下记录. 1.用地代码与名称转换 1.1城规用地代码CGYDDM转用地名称CGYDMC 做一个python字典再索引即可(码齐这些分类还 ...
- arcgis中字段计算器使用python-ArcGIS使用字段计算器python脚本整理三规合一图斑
最近试着使用字段计算器内的python脚本整理图斑,蹒跚学步,做下记录. 1.城规用地代码CGYDDM转用地名称CGYDMC 做一个python字典再索引即可(码齐这些分类还挺累..) list = ...
- arcgis字段计算器赋值_基于ArcGIS的python编程 18、在字段计算器中使用Python脚本
很久没有更新专栏了,趁着五一劳动节,刚好有时间"劳动"一下,更新一下专栏的文章.接下来的文章是关于在ArcMap中的字段计算器中使用Python脚本:字段计算器中可以使用的脚本有两 ...
- 24点计算器Python脚本
使用Python脚本枚举24点答案,去除冗余括号,效率没有Ruby版本的好,可能因精度的关系,和其它人些的答案数目不一致,记录之. # -*- coding:gbk -*-import itertoo ...
- gis属性表怎么导成excel_使用Python脚本将Excel表批量赋值到ArcGIS属性表
现需要将Excel表信息批量赋值(不是挂接)到Shp文件的属性表,两张表的字段.记录数一模一样,至于为什么会出现这样的问题,咱也不敢问,只有想个法子把它搞定! 原始的Excel信息表共57列,总共3万 ...
- arcgis python脚本筛选与线共边的面_ArcGIS公共函数Python脚本,Arcgis,常用,功能
Arcgis常用功能 Python脚本 对一些常用功能的python脚本进行总结,方便以后直接调用. 1. 根据属性值删除行 arcpy.MakeFeatureLayer_management(out ...
- Arcgis常用功能 Python脚本
Arcgis常用功能 Python脚本 对一些常用功能的python脚本进行总结,方便以后直接调用. 1. 根据属性值删除行 arcpy.MakeFeatureLayer_management(out ...
最新文章
- with语句和上下文管理器
- mysql 约束 域_MySQL-约束
- c#(winform)中ComboBox和ListBox添加项完全解决
- python网络通信框架_Python运维-Socket网络编程 (1)
- 差分能量分析介绍(一)
- sysbench 压测 详解
- [c#]RabbitMQ的简单使用
- 云计算体系结构中soa构建层_云计算的服务模式及技术结构
- 就算忘了自己也忘不了你
- 华为云GaussDB(for openGauss)商用啦!
- Kafka : KafkaProducer Closing the kafka producer with timeoutMillis
- python oracle query,python链接oracle/plsql数据库 ,查询功能(query) 用cursor fetchall
- php长按图片保存mui,Vue+mui实现图片的本地缓存
- Fiddler工具工作原理
- 【开发环境】 irun(ncverilog)无法dump fsdb波形问题解决方法
- Silverlight 2 Beta 1学习资源
- python函数参数生成器_python函数补充、生成器、迭代器
- JAVA算法: 给定一个整数转换成对应的罗马字符(Integer to Roman)
- (XWZ)的python学习笔记Ⅳ——错误、调试和测试
- uni-app的h5/小程序/app 网络请求,解决本地环境和生产环境网络请求问题
热门文章
- SpringBoot程序排除@Configuration配置类
- 文琼书斋 v3.1 绿色
- vivo X9i的Usb调试模式在哪里,开启vivo X9iUsb调试模式的方法
- [刷题]2017百度之星资格赛 - 度度熊与邪恶大魔王
- 英特尔大师挑战赛燃爆斗鱼直播节,华硕ROG热血助阵
- 腾讯、字节、蘑菇街、阿里实习生面经(面试记录)(2)
- 梦幻西游手游经验任务链计算机,梦幻西游手游跑环任务详解 刷经验利器
- 孝经白话:五刑章第十一
- [Unity]摄像机动态人物头像amp;截图amp;TargetTexture问题
- 计算机电脑照片大小,电脑上怎么调整照片kb