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 动态数据下的锚点错位问题解决方法
Dec 24 Javascript
用js做一个小游戏平台 (一)
Dec 29 Javascript
js异常捕获方法介绍
Apr 10 Javascript
jQuery中animate用法实例分析
Mar 09 Javascript
JS实现选项卡实例详解
Nov 17 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
Mar 30 Javascript
利用JavaScript阻止表单提交的两种方法
Aug 11 Javascript
js继承实现方法详解
Dec 16 Javascript
如何选择适合你的JavaScript框架
Nov 20 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
Dec 22 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
Jun 27 Javascript
Vue多选列表组件深入详解
Mar 02 Vue.js
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
php5 mysql分页实例代码
2008/04/10 PHP
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
用JAVASCRIPT如何给<textarea></textarea>赋值
2007/04/20 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
js日历功能对象
2012/01/12 Javascript
终于解决了IE8不支持数组的indexOf方法
2013/04/03 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
js 判断js函数、变量是否存在的简单示例代码
2014/03/04 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
javascript跨域请求包装函数与用法示例
2016/11/03 Javascript
weUI应用之JS常用信息提示弹层的封装
2016/11/21 Javascript
Bootstrap DateTime Picker日历控件简单应用
2017/03/25 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
在node环境下parse Smarty模板的使用示例代码
2019/11/15 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
2020/10/28 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
取numpy数组的某几行某几列方法
2018/04/03 Python
python OpenCV GrabCut使用实例解析
2019/11/11 Python
python 循环数据赋值实例
2019/12/02 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
localStorage 设置过期时间的方法实现
2018/12/21 HTML / CSS
Casadei卡萨蒂官网:意大利奢侈鞋履品牌
2017/10/28 全球购物
通信工程毕业生自荐信
2013/11/01 职场文书
工程专业求职自荐书范文
2014/02/08 职场文书
教师自我反思材料
2014/02/14 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
教你使用Jenkins集成Harbor自动发布镜像
2022/04/03 Servers