『003』闲下来,写个算24点的工具吧(ノωく)
目录
- 前言
- 算法研究
- 核心代码
- 最终效果
- 小插叙
- 体验地址
- 项目地址
- 特别感谢
前言
昨天在群里看到了一个分享的小游戏《王者算
24点
》
然后开心地分享了自己
340秒
算10个
的战绩
结果被小青瞬间KO。。她用
202秒
就结束了
既然作为程序员,那就用程序员的方式来继续战斗吧~
算法研究
说到
24点
,无非就是4个
数字之间的组合,也不知道是怎么写的,反正我最后算出来是有3888种
组合方式,只要算完这3888种
,就能找出结果了,不然就是没有结果
- 先从
4个
里挑1个
- 从剩下
3个
里挑1个
- 组合后计算出
1个
新的数字(通过加减乘除)- 去掉挑出的
2个
数字,加入新的数字- 循环往复
核心代码
/*** 相当与是每一次计算的分布* @param arr {Array} 一堆数字* @param step {Array} 一堆步骤*/
function getOneCalc(arr, step) {step = step || [];for (let i = 0; i < arr.length; i++) {for (let j = i + 1; j < arr.length; j++) {/** * 0 a+b* 1 a-b* 2 b-a* 3 a*b* 4 a/b* 5 b/a*/ for (let z = 0; z < 6; z++) {let newVal;let newArr = getOtherNum(arr, i, j);let newStep = JSON.parse(JSON.stringify(step));if (z == 0) {// 计算新的值newVal = Number(arr[i]) + Number(arr[j]);// 用来记录操作方法,最后看出流程用newStep.push(arr[i] + '+' + arr[j]);}if (z == 1) {newVal = arr[i] - arr[j];newStep.push(arr[i] + '-' + arr[j]);}if (z == 2) {newVal = arr[j] - arr[i];newStep.push(arr[j] + '-' + arr[i]);}if (z == 3) {newVal = arr[i] * arr[j];newStep.push(arr[i] + '*' + arr[j]);}if (z == 4) {newVal = arr[i] / arr[j];newStep.push(arr[i] + '/' + arr[j]);}if (z == 5) {newVal = arr[j] / arr[i];newStep.push(arr[j] + '/' + arr[i]);}newArr.push(newVal);if (newArr.length !== 1) {// 如果还没有计算到最后的值,就继续计算getOneCalc(newArr, newStep)} else {// 如果最后的结果正确,就打印计算流程if (newArr[0] === 24) {console.log(newArr[0], newStep);}}}}}
}
最终效果
达成了
160秒
完成了10题
的成就,超越了99%
的玩家~
主要是输入和判断还要时间( •̀ ω •́ )y,不然还可以更快
小插叙
小青说少玩游戏,特别是这类游戏的整体感觉还不行(哈哈,论UI的重要性了),顺带一提,长期寻找UI美术小伙伴一起研发小游戏,有兴趣的可以联系我哈
tel:18868196263
~
体验地址
https://tekii.cn/public/24/
Chrome里面
textarea
换行有问题,可以在手机上访问该页面
项目地址
https://gitee.com/ko-orz/24/
特别感谢
[1] 匿名. 《王者算24点》2019-02-12
[2] 小青. 体验游戏 2019-02-20
[3] 写了这篇文章的2019年02月21日21时29分的Maxmon
『003』闲下来,写个算24点的工具吧(ノωく)相关推荐
- 『原创』ewebeditor 2.1.6 上传漏洞利用工具
朋友说原来的ewebeditor 2.1.6 HTML版用着太麻烦,每次还得输入地址,叫我帮忙写一个...- -||| ewebeditor 2.1.6 上传漏洞利用工具 ewebeditor在网上用 ...
- Python爬虫追美剧?你咋这么溜溜溜『上篇』
皮爷不知道大家有多少人是喜欢看美剧? 反正皮爷是个美剧迷,不能说狂,但是看美剧的时间也有差不多10年了.硬生生的把好多部剧都追到了完结. 最早以前,网上资源还不是很严的时候,找个美剧是十分简单的.可是 ...
- 『MTCNN』2万多字教科书式详解
发现一篇关于MTCNN的博文,本来打算自己写一篇的,但看了这篇,我觉得不用我再写了,转载跟大家分享一下 尊重原创,转载自:https://blog.csdn.net/sinat_39783664/ar ...
- 『开源』Slithice 2013 服务器集群 设计和源码
相关介绍文章: <『设计』Slithice 分布式架构设计-支持一体式开发,分布式发布> <『集群』001 Slithice 服务器集群 概述> <『集群』002 Sli ...
- 从锤子手机看『情怀』与有『情怀』的产品设计
2019独角兽企业重金招聘Python工程师标准>>> 是老罗T2的发布会,我才开始真正接触情怀这个词. 发布会上T2是一款骁龙808的CPU,小米4C在1300-1500之间,锤子 ...
- 『往事』之---我的一路十年
『往事』之---我的一路十年 2009-12-26/Lexlin 十年这个题目其实早见朋友写过,当时也想动笔一试,却最终没有坚持下来,不是因为记忆的残缺或丢失,只是因为这10年多是平淡和失落,因而 ...
- 『分享』〖文献资料〗古代诗歌中的意象整理
导读: 『分享』[文献资料]古代诗歌中的意象整理 古代诗歌中的意象整理 众所周知,诗歌的创作十分讲究含蓄.凝练.诗人的抒情往往不是情感的直接流露,也不是思想的直接灌输,而是言在此意在彼,写景则借景抒情 ...
- 『转载』Debussy快速上手(Verdi相似)
『转载』Debussy快速上手(Verdi相似) Debussy 是NOVAS Software, Inc(思源科技)发展的HDL Debug & Analysis tool,这套软体主要不是 ...
- 两个构件的重合点_初三物理易错点:你被眼睛欺骗了,那些『平面镜成像』中的困惑...
时光飞逝,一晃初三的伙伴们已经返校复课一个多月了,想必有很多感慨和困惑吧? 还有的地方初三的伙伴们还没有复课,在家乖乖地学习网课,想必也是有诸多的困惑和不解吧? 今天木木老西跟大家解开物理当中的一个困 ...
最新文章
- 【ZZ】浅谈大型web系统架构 | 菜鸟教程
- mysql collation utf8_mysql数据库 表字段 的collation utf8_unicode_ci
- asin c语言中 返回值范围_asin()_C语言asin()详解:反正弦函数,求反正弦值
- oracle 清空表数据的2种方式及速度比较
- 因为高考砸了,所以大学一直在超越
- python将txt文件中的大小写转换_面试题:Python大小写转换
- P1971 [NOI2011]兔兔与蛋蛋游戏
- RabbitMQ在Ubuntu上的环境搭建
- c语言getchar_二级C语言试题刷题录
- 修改文件中的内容,使用fileinput模块
- Native App
- 360极速浏览器连接远程notebook会出现问题,403 GET /api/kernels/
- Qt QDataTime QString 两个类的使用
- QTeewidget逐行进行遍历(递归)
- MAC python版本选择实现版本切换
- 计算机打字键盘亮怎么设置,win7系统键盘灯亮着但是不能打字的解决方法?
- 现代三角钢琴音源 Native Instruments The Grandeur 1.2
- C++类内静态成员的内存释放问题
- 基于ArduPilot的旋翼式无人机飞行器开发系列(四,四轴无人机的各个组件详解及其焊接,组装)---正在更新中
- 自然语言处理NLP星空智能对话机器人系列:Facebook StarSpace框架初体验
热门文章
- 【Leetcode473】火柴拼正方形(递归与回溯)
- 深富策略:股市中对敲的操作手法
- python自动化之UI招聘网
- AE模板 线条呼出文字标注介绍科技动画(含使用教程)
- 2019超级计算机的最新进展,2019—2020,这就是我的中国!
- UpdatePanel AsyncPostBackTrigger PostBackTrigger
- [CISCN2020]-rceme
- bochs上网镜像怎么上网_bochs core镜像可上网版
- bezier 曲线的绘制 matlab实现
- 安庆师范大学计算机与信息学院考研光荣榜,信息工程学院2016级考研考公光荣榜(十)...