Python兔子毒药问题实例分析


Posted in Python onMarch 05, 2015

本文实例分析了Python兔子毒药问题。分享给大家供大家参考。具体分析如下:

问题大致是这样的:1000瓶无色无味的液体,其中一瓶为毒药,其它皆为清水,毒药只取一滴与清水混合为一瓶也可以毒死兔子。现在有10只兔子,当兔子喝下毒药两个小时后死去,请设计一种方案,能够在24小时内找到这瓶毒药。
................2分钟后
前面的问题你一定想清楚了,那么略改动一下:1000瓶无色无味的液体,其中一瓶为毒药,其它皆为清水,毒药只取一滴与清水混合为一瓶也可以毒死兔子。现在有10只兔子,当兔子喝下毒药20个小时后死去,请设计一种方案,能够在24小时内找到这瓶毒药。
................2分钟后
有多种方法,比如我每隔5分钟给兔子喝一次100瓶液体混合在一起的东西,根据兔子死去的先后顺序,就可以判断是那一瓶了。

有没有更好的办法呢,我这里仅仅提供一种时间最优的方法,也就是在20个小时找到这瓶毒药。当然也可以有死的兔子最少,在死去兔子和时间找到一个最佳折中点的优化问题。
方法如下:
给10只兔子编号1-10,每只兔子代表一个数,列表如下:
编号    1    2    3    4    5    ...    10
数字    1    2    4    8    16    ...    512

瓶子也有编号,依次为1-1000。    呵呵,聪明的你应该知道我要怎么做了吧,不过我还是要说下去,并写python代码来实现。
我希望是当编号为Y1,Y2,Y3...的兔子死去时,可以推导出编号为X瓶子为毒药。比如编号为1,2,4的兔子死去,那就得知 兔子对应的数字 为1+2+8=11,就是编号为11的瓶子是毒药。比如编号为1,4,10的兔子死去,那就得知 兔子对应的数字 为1+8+512=521,就是编号为521的瓶子是毒药。
现在的问题就是要知道编号不同的每只兔子要喝哪几瓶液体。

Python代码如下:

def main():
    """
  baselist是兔子编号从1-10对应的数字,
  result是最终每只兔子要喝的液体
    """
  baselist=[1,2,4,8,16,32,64,128,256,512]
  result=[[],[],[],[],[],[],[],[],[],[]]
  for water in range(1,1001):
    watertmp=water
    for i in range(9,-1,-1):
      if (watertmp-baselist[i])>=0:
        watertmp -= baselist[i]
        result[i].append(water)
  for i in range(1,11):
    print "The Num %d rabit need drink the next liquid " % i+1,result[i]
  pass
if __name__=="__main__":
  main()

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python实现的重启关机程序实例
Aug 21 Python
python通过shutil实现快速文件复制的方法
Mar 14 Python
在Python中用split()方法分割字符串的使用介绍
May 20 Python
python对配置文件.ini进行增删改查操作的方法示例
Jul 28 Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
Jun 18 Python
简单了解Django应用app及分布式路由
Jul 24 Python
python tkinter canvas使用实例
Nov 04 Python
Python属性和内建属性实例解析
Jan 14 Python
Pytorch 使用CNN图像分类的实现
Jun 16 Python
详解python字符串驻留技术
May 21 Python
Python 的演示平台支持 WSGI 接口的应用
Apr 20 Python
Python获取服务器信息的最简单实现方法
Mar 05 #Python
Python实现简单的可逆加密程序实例
Mar 05 #Python
Python装饰器的函数式编程详解
Feb 27 #Python
python分析nignx访问日志脚本分享
Feb 26 #Python
python分析apache访问日志脚本分享
Feb 26 #Python
Python构造函数及解构函数介绍
Feb 26 #Python
python中的__slots__使用示例
Feb 26 #Python
You might like
数据库相关问题
2006/10/09 PHP
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
2010/05/06 PHP
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
php单一接口的实现方法
2015/06/20 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
JavaScript基本对象
2007/01/11 Javascript
javascript 设计模式之单体模式 面向对象学习基础
2010/04/18 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
node.js中的buffer.toString方法使用说明
2014/12/14 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
基于 Node.js 实现前后端分离
2016/04/23 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
vue项目中引入vue-datepicker插件的详解
2019/05/14 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
Python yield 小结和实例
2014/04/25 Python
python在linux中输出带颜色的文字的方法
2014/06/19 Python
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
python xml解析实例详解
2016/11/14 Python
对Python中9种生成新对象的方法总结
2018/05/23 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
Python facenet进行人脸识别测试过程解析
2019/08/16 Python
python 变量初始化空列表的例子
2019/11/28 Python
Python生成词云的实现代码
2020/01/14 Python
python中翻译功能translate模块实现方法
2020/12/17 Python
css3中检验表单的required,focus,valid和invalid样式
2014/02/21 HTML / CSS
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
病危通知单
2015/04/17 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书