枚举法计算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 双端队…...
你的耳机真的在发挥全部潜力吗?Equalizer APO带来的音频革命
你的耳机真的在发挥全部潜力吗?Equalizer APO带来的音频革命 【免费下载链接】equalizerapo Equalizer APO mirror 项目地址: https://gitcode.com/gh_mirrors/eq/equalizerapo 你有没有过这样的体验?花了几千块钱买来的高端耳机,播放…...
双核Delfino架构解析:如何解决复杂实时控制系统的性能瓶颈
1. 项目概述:从“双核”到“创新架构”的深度解构最近在和一些做工业控制、新能源以及高端医疗器械的朋友交流时,发现一个词被反复提及,那就是“双核Delfino”。乍一听,这像是一个具体的芯片型号,但深入聊下去…...
自指系统在生命科学领域的机制与原理(世毫九实验室科普系列)
自指系统在生命科学领域的机制与原理(世毫九实验室科普系列) 作者:方见华 单位:世毫九实验室 1. 引言:自指系统的概念界定与研究意义 1.1 自指系统的定义与特征 自指系统(Self-referential Systems…...
Godot实战(一)—— 用C#构建2D躲避游戏的核心机制
1. 环境准备与项目初始化 第一次打开Godot引擎时,那个简洁的界面可能会让你有点不知所措。别担心,我们一步步来。点击"New Project"按钮,给你的游戏项目起个名字,比如"DodgeTheCreeps"。建议专门创建一个空文…...
LangGraph入门:构建有状态的AI Agent工作流
LangGraph 入门:用状态图构建 Agent手写 ReAct 循环容易写出 bug。LangGraph 用「状态图」的方式定义 Agent,把每一步定义为一个节点,跳转逻辑定义为边——清晰、可测试、可扩展。一、为什么需要 LangGraph 手写 Agent 循环的痛点:…...
红队实战靶场搭建与ATTCK攻击链复现
1. 红队靶场环境搭建全流程 搭建红队实战靶场是安全研究的必修课,但很多新手常被复杂的网络配置劝退。我去年给某金融企业做内网渗透培训时,就遇到过学员集体卡在靶机互连阶段的尴尬场面。下面分享一套经过20企业实战验证的搭建方法。 首先需要准备三台虚…...
STM32H7网络延迟问题分析与解决方案
1. 问题现象与背景分析最近在将STM32H7系列设备的DFP(Device Family Pack)从v2.2.0升级到v2.3.0版本后,不少开发者反馈网络数据传输出现了明显的延迟问题。通过简单的ping测试可以直观观察到,使用v2.3.0版本的往返时间(RTT)相比v2…...
数字信号处理算法在实时系统中的应用【附代码】
✨ 长期致力于实时高速相干光通信、低复杂度数字信号处理模块、并行化研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)无乘法器的恒模算法并行化设计&…...
OctoBase源码解析:深入理解Rust实现的本地优先数据库引擎 [特殊字符]
OctoBase源码解析:深入理解Rust实现的本地优先数据库引擎 🐙 【免费下载链接】OctoBase 🐙 OctoBase is the open-source database behind AFFiNE, local-first, yet collaborative. A light-weight, scalable, data engine written in Rust.…...
SKNet核心机制解析与PyTorch实战:从Split-Fuse-Select到完整网络构建
1. SKNet核心机制解析:从Split-Fuse-Select到多尺度特征融合 SKNet(Selective Kernel Networks)是CVPR 2019提出的创新性网络结构,它在传统卷积神经网络的基础上引入了动态选择机制。这个机制的核心在于让网络能够自适应地选择不同…...
