js实现杯子倒水问题自动求解程序


Posted in Javascript onMarch 25, 2013

智力测试题经常遇到类似的逻辑题,给几个容量不等的杯子,让你倒出多少的水。

安卓上有一款专门玩这个题的游戏叫做Water Logic.

js实现杯子倒水问题自动求解程序

我安装这个游戏把几十个关卡通了一遍,感觉这个游戏的关卡设计很不好,关卡的难度并不是递增的,有很多后面的关卡相当的弱智,并且缺乏高难度的关卡。

做为程序员的我们,玩这类题目应该都没问题,10步以内的都可以轻松搞定,10步以上的也可以搞定但未必能够轻松达到最少步数。

有3颗星强迫症的玩家兼程序员,写出这么个自动求解的小程序,以后这个问题再也不是问题了。

js实现杯子倒水问题自动求解程序

点击这里试试杯子倒水问题自动求解吧

算法基本逻辑

每个杯子有倒满、倒空、倒入其它杯子的操作,所以总共是: 杯子数*(杯子数-1+2)

对于3只杯子的情况,每一步可选的操作有12种.  如果2个杯子则每步可选操作有6种。

遍历每一种操作,记录操作完成后各个杯子内的水量,以水量计算出一个key来建立map.

遍历各种倒水操作的过程中,如果key已经存在且当前步数大于先前记录的步数则舍弃该操作。

这个小程序只能解决2个杯子或3个杯子的倒水问题,并没有写成N个杯子通用的,代码有很多hard code。

Javascript 相关文章推荐
深入理解JavaScript系列(3) 全面解析Module模式
Jan 15 Javascript
Jquery多选框互相内容交换的实例代码
Jul 04 Javascript
AngularJS入门教程之学习环境搭建
Dec 06 Javascript
谈谈JavaScript自定义回调函数
Oct 18 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
Jan 21 Javascript
js 创建对象 经典模式全面了解
Aug 16 Javascript
详细总结Javascript中的焦点管理
Sep 17 Javascript
JS访问DOM节点方法详解
Nov 29 Javascript
node中modules.exports与exports导出的区别
Jun 08 Javascript
使用electron将vue-cli项目打包成exe的方法
Sep 29 Javascript
详解vue中axios请求的封装
Apr 08 Javascript
JQuery的加载和选择器用法简单示例
May 13 jQuery
js实现上传图片之上传前预览图片
Mar 25 #Javascript
使用jQuery validate 验证注册表单实例演示
Mar 25 #Javascript
多个表单中如何获得这个文件上传的网址实现js代码
Mar 25 #Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
Mar 25 #Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
Mar 24 #Javascript
js 字符串转换成数字的三种方法
Mar 23 #Javascript
jquery多选项卡效果实例代码(附效果图)
Mar 23 #Javascript
You might like
smarty模板引擎基础知识入门
2015/03/30 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
jQuery timers计时器简单应用说明
2010/10/28 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
使用forever管理nodejs应用教程
2014/06/03 NodeJs
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
jQuery制作仿Mac Lion OS滚动条效果
2015/02/10 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
一个php+js实时显示时间问题
2015/10/12 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
2017/06/17 Javascript
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
vue自定义指令和动态路由实现权限控制
2020/08/28 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
python基础教程之序列详解
2014/08/29 Python
python基于Tkinter库实现简单文本编辑器实例
2015/05/05 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
自我推荐书
2013/12/04 职场文书
暑期实习鉴定
2013/12/16 职场文书
秋季运动会活动方案
2014/02/05 职场文书
2014乡镇“三八”国际劳动妇女节活动总结
2014/03/01 职场文书
我爱家乡演讲稿
2014/09/12 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
大学生考试作弊检讨书1000字
2014/10/14 职场文书
实验心得体会范文
2016/01/25 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书