Python兔子毒药问题实例分析

本文实例分析了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程序设计有所帮助。

(0)

相关推荐

  • python批量提交沙箱问题实例

    本文实例讲述了python批量提交沙箱问题,分享给大家供大家参考.具体方法如下: 出现的问题如下: 1. Popen的使用,在linux下参数用列表传,不要用字符串传   否则可能会有"OSErrorror: [Errno 2] No such file or directory"错误 2. 列表要拷贝用 shutil模块中  不然会连续append..提交完第一个样本后,后面的提交参数就错了. 代码如下: import os from subprocess import Popen

  • python计算书页码的统计数字问题实例

    本文实例讲述了python计算书页码的统计数字问题,是Python程序设计中一个比较典型的应用实例.分享给大家供大家参考.具体如下: 问题描述:对给定页码n,计算出全部页码中分别用到多少次数字0,1,2,3,4...,9 实例代码如下: def count_num1(page_num): num_zero = 0 num_one = 0 num_two = 0 num_three = 0 num_four = 0 num_five = 0 num_six = 0 num_seven = 0 nu

  • python求众数问题实例

    本文实例讲述了python求众数问题的方法,是一个比较典型的应用.分享给大家供大家参考.具体如下: 问题描述: 多重集中重数最大的元素称为众数...就是一个可以有重复元素的集合,在这个集合中重复的次数最多的那个数就叫它的众数... 如S = [1,2,2,2,3,5] 重数是2,其重数为3 实例代码如下: list_num = [] list_num_count = 0 dict_num ={} #从文件读入,文件第一行为集合中元素的个数,以后每一行为一个元素 list_num_count =

  • python中文编码问题小结

    中文编码问题一直是Python程序设计中很头痛的问题,本文对此较为详细的进行了总结归纳.具体如下:   当字符串是:'\u4e2d\u56fd' >>>s=['\u4e2d\u56fd','\u6e05\u534e\u5927\u5b66'] >>>str=s[0].decode('unicode_escape') #.encode("EUC_KR") >>>print str 中国 当字符串是:' 东亚学团一中' >>

  • 布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)

    因为Python是自带文档,可以通过help函数来查询每一个系统函数的用法解释说明.一般来说,关键的使用方法和注意点在这个系统的文档中都说的很清楚.我试图在网上找过系统文档的中文版的函数功能解释,但是都没有找到,所以我决定将就使用英文版的系统自带的函数解释来学习. 如果你想进行Tkinter和wxPython编程,想要知道一般的widget的使用方法和属性介绍,英文又不是太好的话,我推荐你,你可以去看看<Python与Tkinter编程>这本书,里面392页到538页的附录B和附录C选择了常用

  • Python解决鸡兔同笼问题的方法

    本文实例讲述了Python解决鸡兔同笼问题的方法,分享给大家供大家参考.具体分析如下: 问题描述 一个笼子里面关了鸡和兔子(鸡有 2 只脚,兔子有 4 只脚,没有例外).已经知道了笼 子里面脚的总数 a,问笼子里面至少有多少只动物,至多有多少只动物 输入数据 第 1 行是测试数据的组数 n,后面跟着 n 行输入.每组测试数据占 1 行,包括一个正整 数 a (a < 32768). 输出要求 n 行,每行输出对应一个输入.输出是两个正整数,第一个是最少的动物数,第二个是 最多的动物数,两个正整数

  • python字典序问题实例

    本文实例讲述了python字典序问题,分享给大家供大家参考.具体如下: 问题描述: 将字母从左向右的次序与字母表中的次序相同,且每个字符最大出现一次..例如:a,b,ab,bc,xyz等都是升序的字符串.现对字母表A产生的所有长度不超过6的升序字符串按照字典充排列并编码如下: 1 2 .. 26 27 28 ... a b .. z ab ac .. 对一个升序字符串,迅速计算出它在上述字典中的编码. 实现代码如下: import string all_letter = string.ascii

  • python益智游戏计算汉诺塔问题示例

    汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘. 复制代码 代码如下: times = 0def test(num,a,b,c):    globaltimes    ifnum==1:       print (a,b)       times+=1 else

  • Python兔子毒药问题实例分析

    本文实例分析了Python兔子毒药问题.分享给大家供大家参考.具体分析如下: 问题大致是这样的:1000瓶无色无味的液体,其中一瓶为毒药,其它皆为清水,毒药只取一滴与清水混合为一瓶也可以毒死兔子.现在有10只兔子,当兔子喝下毒药两个小时后死去,请设计一种方案,能够在24小时内找到这瓶毒药. ................2分钟后 前面的问题你一定想清楚了,那么略改动一下:1000瓶无色无味的液体,其中一瓶为毒药,其它皆为清水,毒药只取一滴与清水混合为一瓶也可以毒死兔子.现在有10只兔子,当兔子

  • Python iter()函数用法实例分析

    本文实例讲述了Python iter()函数用法.分享给大家供大家参考,具体如下: python中的迭代器用起来非常灵巧,不仅可以迭代序列,也可以迭代表现出序列行为的对象,例如字典的键.一个文件的行,等等. 迭代器就是有一个next()方法的对象,而不是通过索引来计数.当使用一个循环机制需要下一个项时,调用迭代器的next()方法,迭代完后引发一个StopIteration异常. 但是迭代器只能向后移动.不能回到开始.再次迭代只能创建另一个新的迭代对象. 反序迭代工具:reversed()将返回

  • Python callable()函数用法实例分析

    本文实例讲述了Python callable()函数用法.分享给大家供大家参考,具体如下: python中的内建函数callable( ) ,可以检查一个对象是否是可调用的 . 对于函数, 方法, lambda 函数式, 类, 以及实现了 _ _call_ _ 方法的类实例, 它都返回 True. >>> help(callable) Help on built-in function callable in module __builtin__: callable(...) calla

  • Python Selenium异常处理的实例分析

    1.说明 在使用selenium时,不可避免的会遇到一些异常情况,比如超时.没有找到节点的错误等等.一旦出现这样的错误,程序就不能再运行了.这里我们可以使用tryexcept语句来捕捉异常. 2.实例 from selenium import webdriver from selenium.common.exceptions import TimeoutException, NoSuchElementException browser = webdriver.Chrome() try: brow

  • 利用python调用摄像头的实例分析

    这篇文章主要介绍了python调用摄像头的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 一.打开摄像头 import cv2 import numpy as np def video_demo(): capture = cv2.VideoCapture(0)#0为电脑内置摄像头 while(True): ret, frame = capture.read()#摄像头读取,ret为是否成功打开摄像头,true,false. frame为视频的每一帧图像 frame = c

  • python关键字传递参数实例分析

    1.说明 关键词传递以"形参变量名=实参"的形式参与实参关联,根据形参的名称进行参数传递,使实参和形参的顺序不一致.不用担心定义函数时参数的顺序,直接在传参时指定相应的名称即可. 2.两种形式 makeup_url(protocal='http', address='www.baidu.com') makeup_url(address='www.baidu.com',protocal='http') 3.实例 def makeup_url(protocal, address): pri

  • Python数据标准化的实例分析

    说明 1.将原始数据转换为均值为0,标准差在1范围内. 2.对标准化而言:如果出现异常点,由于有一定数据量,少量异常点对平均值的影响不大,因此方差变化不大. 实例 def stand_demo(): """ 标准化 :return: """ # 1. 获取数据 data = pd.read_csv('dating.txt') data = data.iloc[:, :3] print('data:\n', data) # 2.实例化一个转换器类

  • Python自定义进程池实例分析【生产者、消费者模型问题】

    本文实例分析了Python自定义进程池.分享给大家供大家参考,具体如下: 代码说明一切: #encoding=utf-8 #author: walker #date: 2014-05-21 #function: 自定义进程池遍历目录下文件 from multiprocessing import Process, Queue, Lock import time, os #消费者 class Consumer(Process): def __init__(self, queue, ioLock):

  • Python内置模块logging用法实例分析

    本文实例讲述了Python内置模块logging用法.分享给大家供大家参考,具体如下: 1.将日志直接输出到屏幕 import logging logging.debug('This is debug message') logging.info('This is info message') logging.warning('This is warning message') # 默认情况下,logging将日志打印到屏幕,日志级别为WARNING: #output==============

  • Python反射的用法实例分析

    本文实例讲述了Python反射的用法.分享给大家供大家参考,具体如下: 在做程序开发中,我们常常会遇到这样的需求:需要执行对象里的某个方法,或需要调用对象中的某个变量,但是由于种种原因我们无法确定这个方法或变量是否存在,这是我们需要用一个特殊的方法或机制要访问和操作这个未知的方法或变量,这中机制就称之为反射.接下记录下反射几个重要方法: hasattr 判断对象中是否有这个方法或变量 class Person(object): def __init__(self,name): self.name

随机推荐