你在与其他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合作
您可以访问播放历史#Note.这将暂时解释.
### 实施例的另一种策略
的Python
实现以下战略#Python策略函数:
#IN这种情况下,你犯了一个随机选择
高清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