扑克牌同花顺问题

'''
https://blog.csdn.net/fuxuemingzhu/article/details/79702017
我们需要做三件事:
1 给数字排序
2 计算排序后的数字的零的个数count
3 计算数字之间的gap,相邻数字之间为number[i+1]-num[i]-1
4 如果count>=gap,那么可以构成同花顺
'''
# -*- coding:utf-8 -*-
class Solution:
    def IsContinuous(self, numbers):
        # if not numbers: return False
        if not numbers or len(numbers)!=5 :
            return False
        for i in range(len(numbers)):
            if numbers[i]<0 or numbers[i]>13:
                return False
        numbers.sort()
        zeros = numbers.count(0)
        gaps = 0
        small = zeros
        big = small + 1
        while big < len(numbers):
            if numbers[small] == numbers[big]:
                return False
            gaps += numbers[big] - numbers[small] - 1
            small = big
            big += 1
        return gaps <= zeros
if __name__ == '__main__':
    numbers=[2,3,4,-1,0]
    result=Solution().IsContinuous(numbers)
    print(result)

 

在Python中,计数扑克牌中的同花顺(Straight Flush)是一个常见的组合问题,通常涉及对扑克牌数组进行排序并检查连续的五张牌是否具有相同的花色。这个过程可以通过使用列表和循环来实现。以下是一个简单的步骤概述: 1. **准备数据**:首先,你需要一个包含5张牌及其数值(例如,Ace可以视为1)和花色的数据结构,如列表或元组。 2. **排序牌组**:将牌按照数值排序,这样可以确保连续性。 3. **判断花色**:检查排序后的连续五张牌是否来自同一花色,比如红桃、黑桃、梅花或方块。 4. **计数同花顺**:用一个变量记录遇到同花顺的数量,如果当前牌组满足条件,计数器加一。 5. **遍历所有可能的起始位置**:为了计算出所有可能的同花顺,你需要遍历所有可能的起始位置(从第一张牌到倒数第五张牌)。 6. **实现代码**:根据以上步骤,你可以用Python编写一段代码来完成这个任务。这里不会提供完整的代码,因为这需要具体实现细节,但你可以参考类似算法: ```python def count_straight_flush(deck): flush_count = 0 sorted_deck = sorted(deck, key=lambda x: (x, x)) # 按数字和花色排序 for i in range(len(sorted_deck) - 4): # 遍历所有可能起始位置 if sorted_deck[i] == sorted_deck[i + 1] == ...: # 判断连续五张是否花色相同 if sorted_deck[i] == sorted_deck[i + 5]: # 如果是同花顺 flush_count += 1 return flush_count ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值