枚举法计算24点游戏
# 请在此处编写代码
# 24点游戏
import itertools# 计算24点游戏代码
def twentyfour(cards):"""(1)itertools.permutations(可迭代对象):通俗地讲,就是返回可迭代对象的所有数学全排列方式。itertools.permutations("1118") -> 即将数字1118进行全排列组合(2)itertools.product(*iterables, repeat=1)iterables是可迭代对象,repeat指定iterable重复几次返回一个或者多个iterables中的元素的笛卡尔积的元组即为product(list1, list2) 依次取出list1中的每1个元素,与list2中的每1个元素,组成元组,repeat即为元组中有几个元素,最多重复几次(3)"""for num in itertools.permutations(cards):#提取数字for ops in itertools.product("+-*/", repeat=3):#提取运算符# ({0}{4}{1}){5}({2}{6}{3}) - > 即在{0}{1}{2}{3}放上数字,{4}{5}{6}放上运算符号,只能放三个,四个数字中间只能放三个运算符# 带括号有8种方法#带括号的意思是三个运算符的优先运算组成方式有8类# 1. (ab)cdbsd1 = '({0}{4}{1}){5}{2}{6}{3}'.format(*num, *ops)# 2. a(bc)dbsd2 = '{0}{4}({1}{5}{2}){6}{3}'.format(*num, *ops)# 3. ab(cd)bsd3 = '{0}{4}{1}{5}({2}{6}{3})'.format(*num, *ops)# 4. (ab)(cd)bsd4 = '({0}{4}{1}){5}({2}{6}{3})'.format(*num, *ops)# 5. ((ab)c)dbsd5 = '(({0}{4}{1}){5}{2}){6}{3}'.format(*num, *ops)# 6. (a(bc))dbsd6 = '({0}{4}({1}{5}{2})){6}{3}'.format(*num, *ops)# 7. a((bc)d)bsd7 = '{0}{4}(({1}{5}{2}){6}{3})'.format(*num, *ops)# 8. a(b(cd))bsd8 = '{0}{4}({1}{5}({2}{6}{3}))'.format(*num, *ops)# print([bsd1, bsd2, bsd3, bsd4, bsd5, bsd6, bsd7, bsd8])for bds in [bsd1, bsd2, bsd3, bsd4, bsd5, bsd6, bsd7, bsd8]:try:if abs(eval(bds) - 24.0) < 1e-20:return "24点结果 = "+bdsexcept ZeroDivisionError: # 零除错误continuereturn "Not fond"cards = ['2484', '1126', '1127', '1128', '2484', '1111']
for card in cards:print(twentyfour(card))
总结:
1、了解了枚举算法注意事项
在列举的过程中,既不能遗漏也不要重复。
2、明晰了枚举算法的核心
itertools.permutations将输入的可迭代对象即四个数字进行所有可能的全排列;
for num in itertools.permutations(cards):#提取数字并排列
itertools.product将设定好的List1即四个运算符中提取三个与repeat=3相对应;
for ops in itertools.product("+-*/", repeat=3):#提取运算符
将提取的数字排列与运算符依次放入八种可能的优先运算方式中,如果可以满足24点游戏的规则那么输出结果,如果8种运算方式都无法成功得出结果那么就返回”not fond“。
3、学习了4个数字三个运算符的优先排列方式
共有八种:
(ab)cd、a(bc)d、ab(cd)、(ab)(cd)、((ab)c)d、(a(bc))d、a((bc)d)、a(b(cd))。
4、运算结果
| 输入数字 | 2484 | 1126 | 1127 | 1128 | 2484 | 1111 |
| 运算结果 | (2+4)*(8-4) | ((1+1)+2)*6 | (1+2)*(1+7) | (1+(1*2))*8 | (2+4)*(8-4) | not fond |
相关文章:
枚举法计算24点游戏
# 请在此处编写代码 # 24点游戏 import itertools# 计算24点游戏代码 def twentyfour(cards):"""(1)itertools.permutations(可迭代对象):通俗地讲,就是返回可迭代对象的所有数学全排列方式。itertools.permutations("1118") -…...
@Cacheable注解
Cacheable注解是Spring框架中提供的一种缓存技术, 用于标记一个方法的返回值可以被缓存起来,当再次调用该方法时,如果缓存中已经存在缓存的结果,则直接从缓存中获取结果而不是再次执行该方法,从而提高系统的性能和响应…...
CentOS分区挂载 fdisk、parted方式解析
1 介绍 在linux中,通常会将持久化数据保存到硬盘当中,但是硬盘一把会比较大,因此我们为了方便管理,会将一个硬盘分成多个逻辑硬盘,称之为分区。 为了能够让分区中的文件使得能让操作系统处理,则需要对分区…...
BuildKit
介绍 BuildKit是一个现代化的构建系统,主要用于构建和打包容器镜像。它是Docker官方的构建引擎,支持构建多阶段构建、缓存管理、并行化构建、多平台构建等功能。BuildKit还支持多种构建语法和格式,包括Dockerfile、BuildKit Build Specifica…...
c++ 11标准模板(STL) std::vector (二)
定义于头文件 <vector> template< class T, class Allocator std::allocator<T> > class vector;(1)namespace pmr { template <class T> using vector std::vector<T, std::pmr::polymorphic_allocator<T>>; }(2)(C17…...
Python 循环技巧
目录 在字典中循环时,用 items() 方法可同时取出键和对应的值: 在序列中循环时,用 enumerate() 函数可以同时取出位置索引和对应的值: 同时循环两个或多个序列时,用 zip() 函数可以将其内的元素一一匹配:…...
【Java笔试强训 7】
🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥Fibona…...
工作7年的程序员,明白了如何正确的“卷“
背景 近两年,出台和落地的反垄断法,明确指出要防止资本无序扩张。 这也就导致现在的各大互联网公司,不能再去染指其他已有的传统行业,只能专注自己目前存量的这些业务。或者通过技术创新,开辟出新的行业。 但创新这…...
数学建模——查数据
如果选择C题的小伙伴常常需要查找一些数据,那么这些数据一般都可以从哪里找到呢? 常用的查数据平台 优先在知网、谷歌学术等平台搜索国家统计局 最全面,月度季度年度,各地区各部门各行业,包罗万象 https://data.stat…...
PAT A1019 General Palindromic Number
1019 General Palindromic Number 分数 20 作者 CHEN, Yue 单位 浙江大学 A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are pa…...
ChatGPT会颠覆SEO内容创作吗
近几年 AI 的发展日新月异。除了搜索算法本身大规模应用人工智能,我也一直关注着 AI 用于写作的进展。 上篇关于 Google 有用内容更新的帖子还在说,高质量内容创作是 SEO 最难的事之一,对某些网站来说,如果能有工具帮助ÿ…...
Maven私服搭建
为什么要搭建私服 通常在maven项目的pom.xml文件中引入了某个依赖包之后,maven首先会去本地仓库去搜索,本地仓库搜索不到会去maven的配置文件settings.xml中配置的maven镜像地址去找,比如: <mirrors><!-- mirror| Specif…...
Ajax和Json综合案例
1. 查询所有 创建brand.html,使用axios发送请求,其中查询一般采用get的请求方式 <script src"js/axios-0.18.0.js"></script><script>//1. 当页面加载完成后,发送ajax请求window.onload function () {//2. 发送ajax请求axi…...
【genius_platform软件平台开发】第九十四讲:int64_t的格式化问题(lld和PRId64)
问题起因是在进行上位机软件优化的工作安排时,同事对unsigned long long 类型的时间戳进行了格式化输出优化,从%ull优化为了% PRIu64,我进行代码合并请求处理的时候突然感觉这个可以仔细查一下。查阅到的相关资料如下: * 1. int6…...
多模态之clip
论文:Learning Transferable Visual Models From Natural Language Supervision Github:https://github.com/OpenAI/CLIP OpenAI出品 论文通过网络爬取4亿(image, text)对,使用对比学习的方法训练得到clip(Contrastive Languag…...
Lombok常用注解
文章目录 一、简介二、Idea中配置三、Maven中配置四、相应注解1、Data2、RequiredArgsConstructor3、AllArgsConstructor4、NoArgsConstructor5、Getter/Setter:6、ToString7、EqualsAndHashCode8、Builder9、NonNull10、Log11、Slf4j12、Log4j213、SneakyThrows14、Cleanup15、…...
加拿大各省接受公立教育的初始年龄汇总 — 供携子女赴加的访学、博后参考
近年来到加拿大从事访问学者和博士后研究的申请者日益增多,有些申请者想带孩子同去上公立学校。因为加拿大各省教育局政策有差异,所以入学(包括学前班)年龄不同,为此知识人网小编整理本文为大家解惑答疑。 加拿大为本国…...
数字化工厂:虹科Vuzix AR眼镜在工业制造中的革新应用
随着现代科学技术和新兴需求的快速增长,增强现实(AR)、各种“现实”产品与技术不断涌入创新市场,新兴用例数量正在快速增长,可以肯定,在可预见的未来,AR技术将成为各行各业的生产与工作主流。 增强现实(AR&…...
配置出接口方式的单服务器智能DNS
组网需求 如图1所示,企业部署了一台ISP1服务器对外提供Web服务,域名为www.example.com。ISP1服务器的私网IP地址为10.1.1.10,服务器映射后的公网IP地址为1.1.1.10。企业的DNS服务器上存在域名www.example.com与ISP1服务器地址1.1.1.10的对应关…...
数据结构初阶(栈和队列)
文章目录 一、栈1.1 什么是栈1.2 栈的使用(1)底层代码(2)方法(3)栈的应用 二、队列2.1 什么是队列2.2 队列的使用(1)底层代码的实现(2)队列的使用 2.3 双端队…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
