Python兔子毒藥問題實(shí)例分析
本文實(shí)例分析了Python兔子毒藥問題。分享給大家供大家參考。具體分析如下:
問題大致是這樣的:1000瓶無色無味的液體,其中一瓶為毒藥,其它皆為清水,毒藥只取一滴與清水混合為一瓶也可以毒死兔子?,F(xiàn)在有10只兔子,當(dāng)兔子喝下毒藥兩個(gè)小時(shí)后死去,請(qǐng)?jiān)O(shè)計(jì)一種方案,能夠在24小時(shí)內(nèi)找到這瓶毒藥。
................2分鐘后
前面的問題你一定想清楚了,那么略改動(dòng)一下:1000瓶無色無味的液體,其中一瓶為毒藥,其它皆為清水,毒藥只取一滴與清水混合為一瓶也可以毒死兔子。現(xiàn)在有10只兔子,當(dāng)兔子喝下毒藥20個(gè)小時(shí)后死去,請(qǐng)?jiān)O(shè)計(jì)一種方案,能夠在24小時(shí)內(nèi)找到這瓶毒藥。
................2分鐘后
有多種方法,比如我每隔5分鐘給兔子喝一次100瓶液體混合在一起的東西,根據(jù)兔子死去的先后順序,就可以判斷是那一瓶了。
有沒有更好的辦法呢,我這里僅僅提供一種時(shí)間最優(yōu)的方法,也就是在20個(gè)小時(shí)找到這瓶毒藥。當(dāng)然也可以有死的兔子最少,在死去兔子和時(shí)間找到一個(gè)最佳折中點(diǎn)的優(yōu)化問題。
方法如下:
給10只兔子編號(hào)1-10,每只兔子代表一個(gè)數(shù),列表如下:
編號(hào) 1 2 3 4 5 ... 10
數(shù)字 1 2 4 8 16 ... 512
瓶子也有編號(hào),依次為1-1000。 呵呵,聰明的你應(yīng)該知道我要怎么做了吧,不過我還是要說下去,并寫python代碼來實(shí)現(xiàn)。
我希望是當(dāng)編號(hào)為Y1,Y2,Y3...的兔子死去時(shí),可以推導(dǎo)出編號(hào)為X瓶子為毒藥。比如編號(hào)為1,2,4的兔子死去,那就得知 兔子對(duì)應(yīng)的數(shù)字 為1+2+8=11,就是編號(hào)為11的瓶子是毒藥。比如編號(hào)為1,4,10的兔子死去,那就得知 兔子對(duì)應(yīng)的數(shù)字 為1+8+512=521,就是編號(hào)為521的瓶子是毒藥。
現(xiàn)在的問題就是要知道編號(hào)不同的每只兔子要喝哪幾瓶液體。
Python代碼如下:
def main():
"""
baselist是兔子編號(hào)從1-10對(duì)應(yīng)的數(shù)字,
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()
希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
基于Python實(shí)現(xiàn)自動(dòng)化文檔整理工具
一個(gè)人可能會(huì)在計(jì)算機(jī)上存儲(chǔ)大量的照片、視頻和文檔文件,這些文件可能散落在不同的文件夾中,難以管理和查找。所以本文就來用Python制作一個(gè)自動(dòng)化文檔整理工具吧2023-04-04
對(duì)Python發(fā)送帶header的http請(qǐng)求方法詳解
今天小編就為大家分享一篇對(duì)Python發(fā)送帶header的http請(qǐng)求方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python使用cx_Freeze庫生成msi格式安裝文件的方法
這篇文章主要介紹了Python使用cx_Freeze庫生成msi格式安裝文件的方法,結(jié)合實(shí)例形式分析了Python基于cx_Freeze庫生成msi格式安裝文件操作技巧與相關(guān)問題解決方法,需要的朋友可以參考下2018-07-07
python調(diào)用c++傳遞數(shù)組的實(shí)例
今天小編就為大家分享一篇python調(diào)用c++傳遞數(shù)組的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02
python內(nèi)置函數(shù)frozenset()的使用小結(jié)
本篇文章主要介紹了python內(nèi)置函數(shù)frozenset()的使用小結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05
Python警察與小偷的實(shí)現(xiàn)之一客戶端與服務(wù)端通信實(shí)例
這篇文章主要介紹了Python警察與小偷的實(shí)現(xiàn)之一客戶端與服務(wù)端通信實(shí)例,并附有難點(diǎn)及易錯(cuò)點(diǎn)的分析與說明,需要的朋友可以參考下2014-10-10

