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 爬虫的工具列表大全
Jan 31 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
Sep 26 Python
Python编程实现使用线性回归预测数据
Dec 07 Python
Python学习之Anaconda的使用与配置方法
Jan 04 Python
python消除序列的重复值并保持顺序不变的实例
Nov 08 Python
对Python的zip函数妙用,旋转矩阵详解
Dec 13 Python
Python使用pyserial进行串口通信的实例
Jul 02 Python
Pytorch 使用不同版本的cuda的方法步骤
Apr 02 Python
Python小白学习爬虫常用请求报头
Jun 03 Python
通过代码实例了解Python3编程技巧
Oct 13 Python
用Python 执行cmd命令
Dec 18 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 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
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
Javascript堆排序算法详解
2014/12/03 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
node.js调用Chrome浏览器打开链接地址的方法
2017/05/17 Javascript
你有必要知道的10个JavaScript难点
2017/07/25 Javascript
Node 自动化部署的方法
2017/10/17 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
jQuery 选择方法及$(this)用法实例分析
2020/05/19 jQuery
[51:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/30 DOTA
[36:20]KG vs SECRET 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python实现TF-IDF算法解析
2018/01/02 Python
Flask解决跨域的问题示例代码
2018/02/12 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
Pycharm保存不能自动同步到远程服务器的解决方法
2019/06/27 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
python3实现微型的web服务器
2019/09/03 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
Django celery异步任务实现代码示例
2020/11/26 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
数控技术学生的自我评价
2014/02/15 职场文书
大学生党员自我评价范文
2014/04/09 职场文书
2014年师德师风学习材料
2014/05/16 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
2016年公司“3.12”植树节活动总结
2016/03/16 职场文书
如何撰写创业策划书
2019/06/27 职场文书
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript