前言:
算法进化历程是我新开的一个专栏,每次讲解一道题目,从不同角度、使用不同算法解决同一问题,带领大家一起享受思考的乐趣、体验算法之美。
列车已经启动,准备上车吧!视频内容:
编写程序和电脑玩“剪刀石头布”游戏,分别使用4种不同算法实现判定游戏结果功能。其中使用“字典”数据结构,解决配对类问题的算法非常巧妙;利用“字典”的键值对把字符串和数值对应起来,从而直接使用解析算法解决“剪刀石头布”问题,更是值得大家思考。
视频勘误:
《算法进化历程系列讲座》是我新开的专栏,本节课是第一课,其重要性可想而知。虽然我已经做了精心准备,但还是不能尽如人意。感觉讲课节奏有些拖沓,录制过程中还出现了不少口误,敬请大家谅解。一大早起来录制课程,感觉有些疲惫,声音有些小。我尽量打起精神大声说话,同学们也要认真起来哦!由于本次讲座没有明显的错误,就不给出视频勘误了,如果你发现明显错误,请及时联系我,以便完善勘误表。
算法进化历程1剪刀石头布
小美:阿福,你玩过剪刀石头布游戏吗?
阿福:这算什么问题?谁还能没玩过剪刀石头布?要知道它可是一种世界闻名的猜拳游戏。它起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。简单明了的规则(石头打剪刀,布包石头,剪刀剪布),使得剪刀石头布游戏没有任何规则漏洞可钻,单次玩法比拼运气,多回合玩法比拼心理博弈,使得剪刀石头布这个古老的游戏同时拥有“意外”与“技术”两种特性,深受世界人民喜爱。
小美:哟,你还知道的挺多。那你会编写程序和电脑玩剪刀石头布游戏吗?
阿福:这个应该不难,不就是几条分支语句吗?我今天就让你看看我扎实的基本功。
问题1:
函数功能:根据游戏规则和甲乙玩家出拳情况,输出石头剪子布游戏的结果。
函数名:rock_paper_scissors(s1:str,s2:str)->str
参数表:s1,s2-- 字符串,分别表示甲乙两个人的出拳,只可能取值在{"石头","剪刀","布"}中。
返回值:字符串,存储了游戏结果,只可能取值在{"甲胜","乙胜","平局"}中。
示例1:s1="石头",s2="剪刀",返回"甲胜";
示例2:s1="石头",s2="布"ÿ