话不多说,直接上源码,懂的人自然懂!!!!没有看懂的人,可以留言告诉我,可以给你讲解。参数为一维数组。

    #胡牌算法##万:1-9##条:11-19##饼:21-29def hupaiAlgorithm(self,handStr):a =handStr[:]# 牌数检查。if len(a) % 3 != 2:# print('和牌失败:牌数不正确。')return False# 是否有对子检查。double = []for x in set(a):if a.count(x) >= 2:double.append(x)# print(double)if len(double) == 0:# print('和牌失败:无对子')return False# 7对子检查(由于不常见,可以放到后面进行判断)# 对子的检查,特征1:必须是14张;特征2:一个牌型,有2张,或4张。特别注意有4张的情况。qidui = Trueif len(a) == 14:for x in set(a):if a.count(x) not in [2, 4]:qidui = Falsebreakelse:qidui = Falseif qidui:# print("和牌,七对!!!")     return True       # 常规和牌检测。a1 = a.copy()a2 = []  # a2用来存放和牌后分组的结果。for x in double:# print('double',x)# print(a1[0] in a1 and (a1[0]+1) in a1 and (a1[0]+2) in a1)a1.remove(x)a1.remove(x)a2.append((x, x))for i in range(int(len(a1) / 3)):# print('i-',i)if a1.count(a1[0]) == 3:# 列表移除,可以使用remove,pop,和切片,这里切片更加实用。a2.append((a1[0],) * 3)a1 = a1[3:]# print(a1)elif a1[0] in a1 and a1[0] + 1 in a1 and a1[0] + 2 in a1:  # 这里注意,11,2222,33,和牌结果22,123,123,则连续的3个可能不是相邻的。a2.append((a1[0], a1[0] + 1, a1[0] + 2))a1.remove(a1[0] + 2)a1.remove(a1[0] + 1)a1.remove(a1[0])# print(a1)else:a1 = a.copy()a2 = []# print('重置')breakelse:# print('和牌成功,结果:',a2)return True# 如果上述没有返回和牌成功,这里需要返回和牌失败。else:# print('和牌失败:遍历完成。')return False

python 麻将算胡,快速算法 没有递归,不超过100行相关推荐

  1. python求素数积_用Python求素数的快速算法源码示例

    本篇文章为Python算法相关,用Python求素数的快速算法源码示例.算法在Python的学习中算是一个要点,能研究明白算法的同学都可以算的上是Python的大牛了. 首先简单的来说下什么是素数:质 ...

  2. 麻将普通胡牌算法JS版(含癞子,非轮训)

    记录一下麻将的通用胡牌算法实现,只要满足X*ABC + Y*DDD + EE 即可胡牌. 在这里先分析一下最简单的胡牌思路:先找出所有可能的将牌,若除去两张将牌之外的所有牌都能成刻或顺,则可胡牌. 将 ...

  3. 麻将通用胡牌算法详解(拆解法)

    1.背景 前几天刚好有项目需要胡牌算法,查阅资料后,大部分胡牌算法的博客都是只讲原理,实现太过简单,且没有给出测试用例.然后就有了下面的这个胡牌算法,我将从算法原理和算法实现两部分展开,想直接用的,直 ...

  4. python简单好玩的代码_只需要9步100行Python代码就可以实现一个简单又好玩的弹球游戏...

    今天给大家分享一个有趣又好玩的弹球的游戏,一来可以把类的知识融会一下,二来加深对Python的兴趣.你会发现哎呀Python写小游戏还是蛮方便的,蛮有意思的~~ 需要本文源码:私信回复[源码]即可获取 ...

  5. 麻将基本胡的算法——Java

    算法思想 胡的条件 必须有一对将(两个相同的牌) 除了将,其余牌必须为顺子或刻子 算法(精简版) 提取所有将牌 去除所有刻子 去除所有顺子 没有牌了,胡:还有牌,不胡 算法(完整版) 提取所有将牌(如 ...

  6. python写生日祝福语_脱单狗福利,100行Python代码,每天不同时间段定时给女友发消息...

    用python就可以给女友定时发提示消息了,而且不会漏过每一个关键时刻,每天早上起床.中午吃饭.晚上吃饭.晚上睡觉,都会准时发消息给她了,而且还可以让她学习英语单词哦! 在生日来临之时,自动发祝福语. ...

  7. python有趣的简单代码_简单几步,100行代码用Python画一个蝙蝠侠的logo

    转自:菜鸟学Python 蝙蝠侠作为DC漫画的核心人物之一,一直都受到广大粉丝的喜爱,而笔者作为DC的铁杆粉丝,自然也是老爷(粉丝对蝙蝠侠的昵称)的支持者.今天,笔者就用Python来画一个蝙蝠侠的l ...

  8. Python爬取网站用户手机号_用Python爬虫爬取学校网妹子QQ号,100行代码撩妹,用技术脱单...

    前言: 其实这个项目没什么难度,稍微懂一点爬虫的人或者是已经就业的程序员都可以用自己学的编程语言写出来,但是正是这也原因,也间接证明现在网络很多安全问题的存在,简单的说就是这个网站的程序员偷懒,让用户 ...

  9. python 生成 知乎粉丝数据报告 【简单上手100行代码】

    本次爬取知乎粉丝的浅数据,只用到了很少的爬虫知识.等我有空了,用scrapy+多线程+深度数据+生成h5报告,做一期高级点的. 2019年8月21日测试可用 from selenium.webdriv ...

最新文章

  1. Oracle 9i 从9.2.0.1升级到 9.2.0.6 步骤
  2. sql语句没错 mysql.data.dll类型的异常_未处理的“System.Data.SqlClient.SqlException”类型的异常出现在 system.data.dll 中。...
  3. Session丢失的解决办法小结
  4. Python学习笔记:web开发2
  5. 生成android_Android开发:生成桌面快捷方式是这样做的
  6. LeetCode 142环形链表||-中等
  7. Autowired注解
  8. CSS3 线性渐变背景的过渡效果
  9. 10个Python面试常问的问题
  10. Vscode多个窗口显示多个选项卡/Tabs
  11. Android屏幕元素层次结构
  12. 怎么将html中纵向拉开,css 实现常用的6种垂直剧中方式
  13. 找到驱动精灵屏幕保护图片
  14. openmeetings(开源视频会议系统)的详细安装步骤 (windows版)
  15. 共同富裕、乡村振兴专题:基尼系数、恩格尔系数、泰尔指数-数据大全整理
  16. 移动端/嵌入式-CV模型-2018:MobelNets-v2【Inverted Residuals(中间胖两头瘦)、Linear Bottlenecks(每个倒残差的最后一个卷积层使用线性激活函数)】
  17. 文科妹子都会用 GitHub,你这个工科生还等什么
  18. arcgis标注转为注记后,如何批量修改注记及牵引线颜色
  19. 浪潮存储与虚拟服务器连接失败,浪潮-异构虚拟化存储研究(示例代码)
  20. 多层神经元感知器模型_使用多层感知器模型对星系进行分类

热门文章

  1. qq linux for android,腾讯QQ for android 糊弄还是敷衍?
  2. 让office2007支持MathType5.2
  3. linux非root用户如何将自己安装的python添加到环境变量
  4. PLC工程师必备知识— IO模块选型和使用(上篇)
  5. r语言mfrow全程_R语言(绘图入门)
  6. 【百度地图】折线图平面图
  7. 电脑手机硬件测试软件,手机硬件检测:Z-DeviceTest
  8. 国家对五险一金的交纳说明,太有用了,找都找不到
  9. java图片合成视频
  10. OpenGL模拟太阳系运行