python高级练习题:囚徒困境【难度:3级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
python高级练习题:囚徒困境【难度:3级】:
欢迎第一年的囚徒困境比赛!
你在与其他23个犯人的监狱.有一天,监狱长宣布,有将是一个囚徒困境比赛!比赛的获胜者得到走出监狱免费的.
如果你不熟悉的比赛中,囚徒困境,这里有一个简要介绍:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HZT9NnRb-1571965371839)(http://truebra.in/wp-content/uploads/2015/02/Screen-Shot-2015-02-10-at-7.19.48-PM.png “棋盘游戏”)]
随着游戏板上面显示,你和另一名犯人决定,* 独立*,无论是合作或缺陷.有那么四种可能的结果.每个导致不同数量的,你可以赢得点.
你的目标
你的目标是提交囚徒困境战略进入比赛.如果你的战略是强大的,你可以赢得比赛,走出监狱,并击败这个习题.你会写一个名为
mySolution
其作为输入
历史
(元组的列表,其中日最后的元组是最近一轮由
(你,他们)功能$$ $),每一轮的播放历史记录,并返回要么
“C”
或
“d”
.### 为例策略
的Python
高清mySolution(历史):
导入随机# 如果你需要输入随机的,做自己的函数中.
数= random.randint(1,2)
如果数== 2:
返回"D" #choose到缺陷
其他:
返回"C" #choose合作
此策略随机配合或缺陷.
It是不是一个很好的策略,你可能会需要更复杂的东西取胜.
您可以访问播放历史#Note.这将暂时解释.
### 实施例的另一种策略
的Python
实现以下战略#Python策略函数:
Always缺陷,除非你的对手曾经合作,
#IN这种情况下,你犯了一个随机选择
(合作,10%的叛逃几率的90%的可能性).
高清mySolution(历史):
如果len(历史)== 0:
返回"d"
如果LEN(历史)> 0:
检查= []
(你,他们)=历史[-1] #Access由双方球员作出的最新举动.历史总是由你的移动,然后你的对手的举动元组的列表.
check.append(他们)
如果"C"的检查:
进口随机
数= random.randint(1,10)
如果数== 10:
返回"d"
其他:
回归"C"
其他:
返回"d"
## 锦标赛规则
这是一个* 淘汰赛*.这意味着可以有多达23轮.所以,举例来说,第一轮始于24个策略(您的+ 23个其他囚犯).每种策略将起到每隔策略n次(
5 <= N <= 10
)和每个游戏内会有为k匝(50
<= K <= 100
).以后所有的游戏在一个圆形的玩法,电脑将决定谁赢得点的最小百分比.这是通过将赢得的可能点的最大数的策略的总积分计算.具有最小百分比的策略被消除.计算机会继续,直到有一个男人,女人或BOT的地位. (希望你!)现在,有可能存在对胜利,在这种情况下,所有获奖者获得离开监狱自由领带.#### 还是困惑?
来吧,复制上面的示例解决方案之一,运行示例测试用例.这将有一个小型的比赛,以帮助您获得舒适和自信与真正的交易!如果您想对囚徒困境的更多信息[点击这里](https://en.wikipedia.org/wiki/Prisoner%27s_dilemma)## 希望能看到你的另一面!祝您好运.## 编程目标:```python
def mySolution(history):#tap tap tap...
测试样例:
allplayers = [("My Solution", mySolution), ("butter", butter), ("butter two", butter_two), ("butter three", butter_three)]
eliminationTournament(allplayers)
最佳答案(多种解法):
点击查看答案
更多关联题目:
交流讨论:
景越Python基础训练营QQ群

欢迎各位同学加群讨论,一起学习,共同成长!
免责申明:
本博客所有编程题目及答案均收集自互联网,主要用于供网友学习参考,如有侵犯你的权益请联系管理员及时删除,谢谢
题目收集至https://www.codewars.com/
https://www.codewars.com/kata/prisoners-dilemma-1
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
