范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Python算法之24点游戏

  问题:输入任意的四个数字,这四个数字的取值范围:1~13,这个四个数经过任意的加、减、乘、除四则运算的结果是24,并输出这四个数所有的运算结果为24的可能计算方式组合。
  例如,输入1,2,6,4
  输出:4*6/(2-1)=26
  (2-1)*4*6=24
  (2+6)*(4-1)=24
  ((2-1)*6)*4=24
  代码:from itertools import combinations import re from numpy import random  class Solver:     # 目标值     target = 24     # 四则运算符     ops = ["+", "-", "*", "/", "--", "//"]      def __init__(self, precise_mode=False):         self.preprecise_mode = precise_mode      def solution(self, nums):         result = []         groups = self.dimensionality_reduction(self.format(nums))         for group in groups:             for op in self.ops:                 exp = self.assemble(group[0], group[1], op)["exp"]                 if self.check(exp, self.target) and exp not in result:                     result.append(exp)         return [exp + "=" + str(self.target) for exp in result]      # 降维     def dimensionality_reduction(self, nums):         result = []         if len(nums) > 2:             for group in self.group(nums, 2):                 for op in self.ops:                     new_group = [self.assemble(group[0][0], group[0][1], op)] + group[1]                     result += self.dimensionality_reduction(new_group)         else:             result = [nums]         return result      # 将两个表达式组合成一个     def assemble(self, exp1, exp2, op):         if op == "--" or op == "//":             return self.assemble(exp2, exp1, op[0])         if op in r"*/":             exp1 = self.add_parenthesis(exp1)             exp2 = self.add_parenthesis(exp2)         if self.preprecise_mode:             if op == "-":                 exp2 = self.add_parenthesis(exp2)             elif op == "/":                 exp2 = self.add_parenthesis(exp2, True)         exp = self.convert(exp1["exp"] + op + exp2["exp"], op)         return {"op": op, "exp": exp}      # 根据需要为表达式添加相应的括号     @staticmethod     def add_parenthesis(exp, is_necessary=False):         if (is_necessary and not exp["exp"].isdigit()) or exp["op"] in r"+-":             result = {                 "exp": "(" + exp["exp"] + ")",                 "op": exp["op"]             }         else:             result = exp         return result      @staticmethod     def check(exp, target, precision=0.0001):         try:             return abs(eval(exp) - target) < precision         except ZeroDivisionError:             return False     #将表达式各项重新排序为等价的表达式     @staticmethod     def convert(exp, op):         if op in r"+-":             pattern = r"([+-](((.+)|d+)[*/]((.+)|d+)|d+))"             exp = "+" + exp         else:             pattern = r"([*/]((.+?)|d+))"             exp="*"+exp         result = "".join(sorted(i[0] for i in re.findall(pattern, exp)))         if len(result) != len(exp):             result = exp         return result[1:]      # 将输入的数字格式化为字典     @staticmethod     def format(nums):         return [{"op": " ", "exp": str(num)} for num in nums]      @staticmethod     def group(exp_list, counter):         # 生成以下标号为元素的列表         index_list = [i for i in range(len(exp_list))]         # 以下标号列表取出不重复的组合         combination = list(combinations(index_list, counter))          for group1 in combination:             group2 = list(set(index_list) - set(group1))             yield [                 [exp_list[g1] for g1 in group1],                 [exp_list[g2] for g2 in group2]             ]   if __name__ == "__main__":     auto_input = False     if auto_input:         customer_input = random.randint(1, 20, size=4)     else:         customer_input = list()         customer_input.append(input("请输入第一个数字:"))         customer_input.append(input("请输入第二个数字:"))         customer_input.append(input("请输入第三个数字:"))         customer_input.append(input("请输入第四个数字:"))     task = Solver()     answer = task.solution(customer_input)     if len(answer) == 0:         print("No solutions")     else:         for a in answer:             print(a)

中国移动5G招标华为一无所获,高通成为最大赢家科研技术的推陈出新,产品设备的更新迭代,加速推动了5G全民时代的到来。纵观全球市场,在5G领域掌握话语权的大部分为海外企业,包括高通诺基亚爱立信等通讯巨头,不过在技术壁垒的封锁下,华为的阵痛一场由鸿蒙主导的转型能成吗?文熔财经作者XL被动后退的消费者业务华为的处境有点尴尬。年初至今发布的新机本就寥寥无几,延续至今已有10年的P系列往年都是34月份举行上市发布,P50今年却拖到了7月29日,且无法2599元,中国移动华为智选NZONES7Pro发布并开启预售IT之家8月15日消息今年6月,中国移动旗下的NZONE品牌发布了NZONES7系列5G手机,售价22992499元,类似华为畅享,而联通推出了优畅享2020Plus,电信则推出了新能源汽车销量大增,市场迅速崛起,中国能够领跑世界吗?虽然我国的乘用汽车产销量逐年下降,但是新能源汽车的产销量却出现了较大的增长,目前我国已成为世界上新能源汽车的最大市场,占据41的全球市场份额。新能源汽车是一种新兴产业,随着低碳经济为什么越来越多的果粉投向安卓怀抱iphone4的发布开启了智能机的时代,随后5。6。7的发布更是把苹果推向了巅峰,让当年的安卓手机望尘莫及。但是最近几年,国内的苹果手机销量却逐年降低,究其原因,我觉得有以下几点。比芯片卡脖子还严重,美国芯片专家多是华人,我国半导体该觉醒了点击关注,每天精彩不断!导读比芯片卡脖子还严重,美国芯片专家大多是华人,我国半导体该觉醒了随着科技的快速发展,如今我们对半导体芯片的依赖程度也开始变得越来越深,虽然说一个芯片看上去家里要换空调,看上了小米的,但这几个款式有什么区别?价钱差的不是很多,哪个值?小米家空调机型详解分析小米挂机空调都是代工的,贴牌的长虹代工TCL代工长虹代工产品米家变频M3机型制冷剂R410A三级能耗适用于1620平方左右米家变频M1机型(推荐)制冷剂R41华为不是孤军奋战!海思芯片实现量产,ASML台积电有望被取代在芯片方面,我国在上世纪六七十年代就已涉足,但因为拿来主义让西方在这一领域占领了高地,同时给我国半导体企业的发展造成了很大阻碍。早期的汉芯造假事件,同样给我们半导体行业带来了重创,秋季发布苹果13120Hz高刷对角线相机更窄边框,你要的来了笔歌科技独家报道离苹果秋季发布会越来越近了,大家对苹果新一年周期的旗舰手机也是越来越期待,小刘海对角线相机极致窄边框是你想要的吗?一起来围观!01苹果秋季发布会临近距离本年度的苹果买到翻新iPhone商家不认账怎么办?一招让你被动变主动很多人都喜欢在某平台买iPhone,这些iPhone无一例外都号称是原装机。今天有网友找到我,自己买了一台iPhone11,成色挺好,但总感觉是翻新机,又找不到问题!让我帮忙看看。即将发布的三星GalaxyZFold35G折叠手机今天小编来说说这款三星折叠屏手机,该机型尚未在中国发布,此前三星电子发布了GalaxyZFold25G机型,凭借独特的美学赢得了用户的一致好评与喜爱,就在近日它的全新升级产品三星G
携手四载奇瑞新能源小蚂蚁谱写新序章不负时光,精彩护航。不知不觉奇瑞新能源小蚂蚁已陪伴用户走过了四载春秋,近一千五百个日夜相伴相知。回首2017年,奇瑞新能源小蚂蚁上市即热销,一举引爆微型纯电动汽车市场,成为同级领域千元最强性能手机推荐第一款红米K40很多朋友认为2000左右买不到好手机!那其实是你不会挑,红米k40双11的销冠,搭载了骁龙870处理器支持120Hz高刷,并且还配备了AMOLED的屏幕,2000也华为WATCHGT3测评让智能手表成为像智能手机一样的必需品看着柜台上的智能手表,我始终有一种疏远感。现在的智能手表很专业,很有用,但我恐怕是不会买的,因为始终缺少一个说服我购买的理由。因为我不爱运动不爱社交,没有实时健康监测似乎也不会对我小米要对标苹果走高端,苹果廉价新机iPhoneSE3却将杀到今天小米12系列终于官宣了具体的发布时间,但不少人的关注点反而不在手机本身,而在雷军和一众小米高管的表态上。雷军表示从小米12系列开始,小米手机将正式对标苹果,学习苹果的高端路线。OPPO手机分系列介绍1995年广东步步高电子工业有限公司成立。1999年拆分成三家公司步步高教育电子(步步高点读机)步步高视听电子(OPPO手机)步步高通讯科技(vivo手机)2001年三家公司共同出明明2000块钱以内的手机就够用了,为什么都喜欢买更贵的?明明两馒头就能吃饱,为什么还要多炒两盘菜再来上一盅?奥拓就能上街跑了,怎么会有人买奥迪呢?2000以内是真不够用呀玩游戏配置不够卡顿一分钱一分货钱不到位体验就不到位为什么有婆娘了,报告称今年前10月全国共发生1。4万余起电动自行车火灾新华社北京12月21日电(记者刘夏村)21日,全国人大常委会执法检查组关于检查消防法实施情况的报告提请全国人大常委会会议审议。报告指出,今年1月至10月,全国发生电动自行车及其电池A4Tech双飞燕,带你感受极致顺畅飞一般的感觉人们生活水平不断提高,对生活品质的要求亦随之提升,尤其在办公方面,更加注重办公用品对工作效率是否能起到辅助作用。如今,繁忙的工作状态早已是当代年轻人日常,如果没有给力的设备作为加持小米华为苹果OPPO你感觉哪一个性价比最高?这几年我一直在使用华为的手机Mate40ProMate10ProP8,之前使用的是三星的手机Note2,带有苹果和小米。如果要在小米华为苹果OPPO这四个品牌中,选择哪个性价比最高富士康为什么会从曾经的香饽饽沦落成如今人见人嫌的弃儿呢?许多人也许不相信,曾经的富士康在深圳一度是打工者眼里的香饽饽,那时候能够进入富士康上班,是一件让人觉得幸运的好事。大家都知道,真正让富士康快速发展的时期是代工苹果手机之后的本世纪初小米12和MIUI13即将发布,雷军稳字当头小米12和MIUI13即将发布之际,小米董事长兼CEO雷军于12月21日早间发布微博称,小米的成长要坚定地踏上新的台阶。过去,我们崇尚的是,天下武功,唯快不破。今天,我们追求的,不