天天看點

python 熊貓釣魚_Python資料結構與算法之使用隊列解決小貓釣魚問題

本文執行個體講述了Python資料結構與算法之使用隊列解決小貓釣魚問題。分享給大家供大家參考,具體如下:

按照《啊哈》裡的思路實作這道題目,但是和結果不一樣,我自己用一幅牌試了一下,發現是我的結果像一點,可能我了解的有偏差。

# 小貓釣魚

# 計算桌上每種牌的數量

# 使用defaultdict類,并設定預設類型為int型,即預設值為0

# cardcounts = defaultdict(int)

# 不過deque有對應的方法

def henhenhaahaa():

from collections import deque

hen = deque() # hen的手牌

haa = deque() # haa的手牌

table = deque() # 桌上的牌

# 手紮初始化

for card in [2,4,1,2,5,6]:

hen.append(card)

for card in [3,1,3,5,6,4]:

haa.append(card)

# 當兩個人的手牌都不為零食,遊戲繼續

# 如果某人打出的牌與桌上的某張牌相同

# 即可将兩張牌以及中間的所有牌以此取走

# 由于桌上同樣的牌不可能超過兩張

# 隻要計算目标牌的數量,以此取回即可

# 重新整理桌上的牌(打出牌,取牌)

def refreshtable(person, card):

table.append(card)

if table.count(card)>=2:

while table.count(card)>0:

person.append(table.pop())

while len(hen)!=0 and len(haa)!=0:

# print "tab:",list(table)

i = hen.popleft() # hen先出牌

# print "hen put",i

refreshtable(hen, i) # hen動作

# print "hen:",list(hen)

# print "tab:",list(table)

j = haa.popleft() # haa後出牌

# print "haa put",j

refreshtable(haa, j) # haa動作

# print "haa:",list(haa)

# print "tab:",list(table)

# print "next turn"

if len(hen)!=0:

print "hen win"

print "hen:",list(hen)

else:

print "haa win"

print "haa:",list(haa)

print "ontables"

print "tab:",list(table)

if __name__=="__main__":

print "我們測試結果:"

henhenhaahaa()

# 我自己手動用牌模拟的結果根本就和書上不一樣

# 我覺得我自己的答案沒啥問題

# 單步模拟的結果也是一樣的

運作結果:

python 熊貓釣魚_Python資料結構與算法之使用隊列解決小貓釣魚問題

更多關于Python相關内容感興趣的讀者可檢視本站專題:《Python資料結構與算法教程》、《Python加密解密算法與技巧總結》、《Python編碼操作技巧總結》、《Python函數使用技巧總結》、《Python字元串操作技巧彙總》及《Python入門與進階經典教程》

希望本文所述對大家Python程式設計有所幫助。

本文标題: Python資料結構與算法之使用隊列解決小貓釣魚問題

本文位址: http://www.cppcns.com/jiaoben/python/214494.html