【华为机试题】 [Python] 斗地主之顺子

题目描述

在斗地主只扑克牌游戏中,扑克牌由小到大的顺序为:3.4,5.6,7.8,9,10.J,Q.K.A.2,玩家可以出的扑克牌阵型有:单张、对子、顺子、飞机、炸弹等。

其中顺子的出牌规则为:由至少5张由小到大连续递增的 扑克牌只 组成,且不能包含2。

例如:(3.4,5,6,7}、(3.4,5,6,7,8,9,10,J,Q,K,A}都是有效的顺子;而{,Q,K,A,2}、(2,3,4,5,6}、(3,4,5,6}、(3,4,5.6,8)等都不是顺子给定一个包含 13 张牌的数组,如果有满足出牌规则的顺子,请输出顺子。

如果存在多个顺子,请每行输出一个顺子,且需要按顺子的第一张牌的大小(必须从小到大)依次输出。

如果没有满足出牌规则的顺子,请输出NO。

输入描述:

13张任意顺序的扑克牌,每张扑克牌数字用空格隔开,每张扑克牌的数字都是合法的,并且不包括大小王:2 9 J 2 3 4 K A 7 9  A 5 6不需要考虑输入为异常字符的情况

输出描述:

组成的顺子,每张扑克牌数字用空格隔开:3 4 5 6 7

示例1

输入

2 9 J 2 3 4 K A 7 9 A 5 6

输出

3 4 5 6 7

说明

13张牌中,可以组成的顺子只有1组:3 4 5 6 7.

示例2

输入

2 9 J 1 0 3 4 K A 7 Q A 5 6

输出

3 4 5 6 7

9 10 J Q K A

说明

13张牌中,可以组成2组顺子,从小到大分别为:3 4 5 6 7和9 10 J Q K A

示例3

输入

2 9 9 9 3 4 K A 10 Q A 5 6

输出

No

说明

13张牌中,无法组成顺子。

题目分析:

- 扑克牌按从小到大的顺序排列为:3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A。牌 2 不能用于顺子。

- 顺子的规则是:至少由5张连续递增的牌组成,例如 (3, 4, 5, 6, 7)。

- 需要找出所有可能的顺子组合,每个顺子中的牌不能重复使用。
"""

程序

class Solution:
    def func(self, lst):
        from collections import Counter

        # 返回值
        ans = []
        # 转换成数字更好判断连续性
        map_dict = {
   
   
            'J': 11,
            'Q': 12,
            
斗地主是一款中国最流行、最经典的扑克牌游戏,也是娱乐生活中必不可少的一种。在斗地主中,顺子是最基本也是最常见的牌型之一。顺子是指五张连续的牌,花色可以不同。在斗地主中有时要运用数学规律和心理战术来运用,让自己的顺子组合更具备杀伤力,有着更高的胜率。 华为Python带来的好处是让开发者在手上就能十分方便地运用Python语法编写代码,从而加快程序开发的速度,并且大大降低开发成本。以斗地主游戏为例,我们可以通过使用华为Python来将代码转化为Android平台可读取的代码,从而更快速和便利地为用户打造出更尖端、更高质量的游戏应用。 在斗地主游戏中,我们可以为不同的牌面分别赋予不同的价值和权重,以便于更好地做出卡牌的判断和策略。顺子是最基础的牌型之一,我们要想“战胜”对手,就需要在自己的顺子中尽量多放置顶部的大牌,比如带有点数较高的牌面,这样可以有效地搭配上一些单牌和对子,从而达到更高的攻击效果。在这个过程中,我们可以利用华为Python提供的深度学习、图像处理等相关算法技术,对牌面和牌型进行分析和识别,从而能够更好地判断自己和对手的牌面,制定出更合理的策略和决策,取得更高的胜率。 综上所述,斗地主游戏中的顺子是玩家必不可少的基本牌型,利用华为Python的技术优势,开发者可以更好地实现斗地主游戏的策略化思维,为用户带来更好的游戏体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比特本特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值