❤️震惊!人生苦短,我用python来玩田忌赛马❤️
一读标题笑死自己哈哈哈,最近猪哥(玩得敲好的彭友)找我帮忙解决他不会作业哈哈哈,他们公司自己出的笔试题哈哈哈,希望别被他们出题人看见哈哈哈,回想猪哥说的一句话,万一这就是以后你遇到的试题呢哈哈哈。突然发现自己已经小半年没玩Python了,一上手手都生了,还真是那句话,三天不摸手生了都。
https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)
关于田忌赛马的拙见
- 使用 python 函数实现田忌赛马
- 要求一
- 要求二
- 要求三
使用 python 函数实现田忌赛马
要求一
现在我们
将田忌的马抽象为一个列表 [2,5,8],
齐王的马抽象为另一个列表 [3,6,9],
分别代表各自的下、中、上等马(我自己读到这里就记住值越大,马越好,这样理解就不会错了)。
设计一个函数 race(),将两个列表作为参数传递给race(),将策略抽象为代码使田忌赢得比赛,函数返回每轮对阵情况:
上代码
要求二
现在将马分为 劣 、下、中、上、优五等,五局三胜制,抽象为列表[2,4,6,8,10] 与 [1,3,5,7,9] ,其他条件不变(齐王仍然准守规则,田忌继续不按照套路出牌),计算出田忌有多少种赢得比赛的可能
上代码
要求三
如果你是齐王,已知同级别中己方的马优于田忌的马,事先不知道对方派遣顺序,不过可以根据上一轮对方的派出的马匹制定本轮的选择。制定一种派遣策略,使赢得比赛的几率最大。
第三题我是真不知道咋做了(想这个脑子都长草了!这是亲爷熬夜给我想出来的,可能不是最优,需要点聪明脑子,如果有更好的想法可以私信我,欢迎讨论)
解题思路:
田忌以劣胜优的策略在于输的时候输的比较多,但是赢的时候只是微弱优势赢
如 10-1 8-9 6-7 4-5 2-3 (齐王1:田鸡4)
那想让齐王尽可能获胜的办法就是拉开这个「微弱优势」
方法
齐王第一次排出2的
往后每次分两种情况,
1.田忌赢了,那我们就可以拿出上轮田忌的x-1的参加下一轮。
2.田忌输了,可以继续拿当前最小的出来。
如果x-1的没了,就出最差的那匹,如此循环
这种方法仍然会失败 如田忌按照3 5 7 9 1这样出
上代码
# coding=utf-8from itertools import permutations from typing import *tian = [1, 3, 5, 7, 9] qi = [2, 4, 6, 8, 10]def play() -> float:global qiwin_count = 0cnt = 0for a, b, c, d, e in permutations(tian, 5):qi = [2, 4, 6, 8, 10] # 复原cnt += 1tian_rank = [a, b, c, d, e]qi_rank = [qi.pop(0)] # 初始化for index, last_tian in enumerate(tian_rank[:4]):qi_rank.append(strategy(last_tian, qi_rank[index] > tian_rank[index])) # 每次根据上一次tian的和输赢制定策略# 根据两个rank算输赢win_count += winner(qi_rank, tian_rank)# 返回概率return float(win_count) / float(cnt)def strategy(last_tian: int, is_win: bool) -> int:global qi# 如果齐王上轮赢了,继续拿最小的出来if is_win:return qi.pop(0)# 如果齐王上轮输了else:# 如果x-1的存在,就拿出来if last_tian - 1 in qi:return qi.pop(qi.index(last_tian - 1))# 否则还是拿最小的else:return qi.pop(0)def winner(qi: List[int], tian: List[int]) -> bool:cnt = 0for q, t in zip(qi, tian):cnt += q > treturn cnt >= 3if __name__ == '__main__':print(play())这样算出来的概率是0.075,
感觉前面两个算法题加油扣脑壳是可以凑合写出来的,第三个是真难度(当然对于大佬来说小事一桩)
https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)
总结
以上是生活随笔为你收集整理的❤️震惊!人生苦短,我用python来玩田忌赛马❤️的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: [Vo. 1 No. 1] 高等代数一题
- 下一篇: Pycharm如何导入python文件,