分享一个算法计算牛牛的。

Taurus.php

$cards = str_split('1111222233334444555566667777888899990000JJJJQQQQKKKK');

// 洗牌

shuffle($cards);

// 假设游戏人数为4人 默认发排顺序为 A > B > C > D

$a = array($cards[0], $cards[4], $cards[8], $cards[12], $cards[16]);

$b = array($cards[1], $cards[5], $cards[9], $cards[13], $cards[17]);

$c = array($cards[2], $cards[6], $cards[10], $cards[14], $cards[18]);

$d = array($cards[3], $cards[7], $cards[11], $cards[15], $cards[19]);

// 随机抽取一张牌计算发牌顺序,0 J Q K 分别为10,11,12,13

# $number = $cards[rand(0, count($cards) - 1)];

$number = $cards[random(0, count($cards) - 1)];

switch ($number) {

case '1':case '5':case '9':case 'K':

echo "发排顺序:A > B > C > D\r\n";

$people = array("A" => $a, "B" => $b, "C" => $c, "D" => $d);

break;

case '2':case '6':case '0':

echo "发排顺序:B > C > D > A\r\n";

$people = array("B" => $a, "C" => $b, "D" => $c, "A" => $d);

break;

case '3':case '7':case 'J':

echo "发排顺序:C > D > A > B\r\n";

$people = array("C" => $a, "D" => $b, "A" => $c, "B" => $d);

break;

case '4':case '8':case 'Q':

echo "发排顺序:D > A > B > C\r\n";

$people = array("D" => $a, "A" => $b, "B" => $c, "C" => $d);

break;

}

foreach ($people as $key => $value) {

echo "$key: " . implode(',', $value) . " " . taurus($value) . "\r\n";

}

function taurus($cards){

// 4带1

$judge = array_values(array_count_values($cards));

if($judge == array(1, 4) || $judge == array(4, 1)){

return "4带1";

}

// 3带2

if($judge == array(2, 3) || $judge == array(3, 2)){

return "3带2";

}

// 处理数据

foreach ($cards as $key => $value) {

if(!is_numeric($value)){

$cards[$key] = 0;

}

$cards[$key] = (int)$value;

}

$r = arrangement($cards, 3);

foreach ($r as $key => $value) {

if(0 == (array_sum($value) % 10)){

# $res = array_diff($cards, $value);

$res = array_sum($cards) - array_sum($value);

$taurus = 0;

$tmp = array_sum($res) % 10;

if(0 == $tmp){

return "牛牛";

}

if(array_sum($res) % 10 > $taurus){

$taurus = $tmp;

}

}

}

if(isset($taurus)){

return "牛$taurus";

}

return "没牛";

}

function arrangement($a, $m){

$r = array();

$n = count($a);

if($m <= 0 || $m > $n){

return $r;

}

for ($i=0; $i < $n; $i++) {

$b = $a;

$t = array_splice($b, $i, 1);

if ($m == 1) {

$r[] = $t;

} else {

$c = arrangement($b, $m - 1);

foreach ($c as $v) {

$r[] = array_merge($t, $v);

}

}

}

return $r;

}

执行命令后。

php牛牛发牌算法,分享一个牛牛算法相关推荐

  1. 基于机器学习k-近邻算法完成一个电影是爱情片还是动作片的判断

    k-近邻算法 k-近邻算法,又称为KNN,在机器学习领域k-近邻算法是比较常用的经典算法之一,KNN算法是一个分类算法,它归于实例学习和懒惰学习,它的原理很简单: 为了判断未知实例样本的类别,以所有已 ...

  2. 十大机器学习算法的一个小总结

    在公众号看到来一篇不错的文章,讲解机器学习算法的,感觉挺好的,所以这里对常用的机器学习算法做一个小的总结, 然后根据学习李航老师的<统计学习方法>做得笔记,对这些算法进行补充. 简介    ...

  3. 大数据算法 chap-2 亚线性算法

    亚线性算法 2.1 亚线性算法的定义 2.2 水库抽样-空间亚线性算法 2.3 平面图直径-时间亚线性计算算法 2.4 全0数组判定-时间亚线性判定算法 2.1 亚线性算法的定义 亚线性:比线性消耗更 ...

  4. 【算法学习】贪心算法

    参考算导第三版第16章 贪心算法 文章目录 1. 活动选择问题 1.1 活动选择问题的最优子结构 1.2 贪心选择 1.3 递归贪心算法 1.4 迭代贪心算法 2. 贪心算法原理 2.1 贪心选择性质 ...

  5. 机器学习数据挖掘十大经典算法 数学建模常用算法

    国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006 (香港召开)年12月评选出了数据挖掘领域的十大经典算法.不仅 ...

  6. 激光SLAM之NDT算法(1)算法原理

    /在激光SLAM之NDT算法(2)-建图中我会给出实测可用的建图代码,并予以解释代码结构,这里就先讲讲原理吧!!!/ 无人车激光SLAM系统简单可以分为建图和定位两部分,无人车的定位问题,实际上就是要 ...

  7. 分享一个开源的项目,数据结构和算法必知必会的50个代码实现

    数据结构和算法必知必会的50个代码实现 这个开源项目是有前Google工程师打造出来的,使用了c,go,java,python,php等很多中语言实现了一些数据结构和算法,对于喜欢算法的来说可谓是一个 ...

  8. php 冒泡查找 降序 随机数 封装,又一个PHP实现的冒泡排序算法分享

    又一个PHP实现的冒泡排序算法分享 经典的冒泡排序法一直是许多程序沿用的其中一种排序法,话说冒泡排序法在效率上比PHP系统函数sort更高效.本章不讨论性能,所以就不拿它来跟系统性能做对比了. 冒泡排 ...

  9. python点云快速配准_分享一个V-SLAM中点云配准算法改进的方法

    近年来,随着自主导航的广泛应用,视觉同时定位与地图构建(Visual simultaneous localization and mapping, V-SLAM)通过自身携带的视觉传感器对周围环境进行 ...

  10. 分享一个JAVA专业接口开发利器,牛牛牛新鲜出炉!!!

    分享一个JAVA专业接口开发利器,集成在线接口文档 Swagger-ui,采用Jwt Token验证机制,最牛在于业务restful接口代码自动生成,更更牛的在接口可以做细化权限控制(例如:不同开发商 ...

最新文章

  1. 一文读懂对抗生成网络的3种模型
  2. Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示
  3. assume用法及意思_分享assume 的几种用法~
  4. EDGE X Kubernetes Meetup·杭州站:云原生在边缘的实践与应用
  5. [导入]ASP.NET 2.0中Page事件的执行顺序
  6. 【Python CheckiO 题解】The Most Wanted Letter
  7. windows 使用qtcreater编译boost 测试
  8. 如何用2分钟做出一张拥有“黑洞”和“脑洞”的热力地图?
  9. 第一次做项目经理总结_工程总承包项目:项目经理如果是第一次做,一定要把握这4个要点...
  10. mac下直接下载xcode的地址
  11. Mac下Alt键配置
  12. C++实现Base32加解码
  13. python实现登录抓取_[Python]网络爬虫(五):利用POST方式登录账号抓取
  14. matlab 画三维图像
  15. 将html导出为PDF文件(为PDF加盖章)
  16. [玩法/技巧] Transmission 3.0 降级到 2.94 恢复数据的方法
  17. 知云文献翻的一些使用
  18. 手机话费充值接口,实现话费充值功能接入
  19. 如何在Python中使用Tushare进行股票日线行情获取并存储至数据库
  20. uni-app 使用u-echarts图表插件步骤(圆环)

热门文章

  1. 使用批处理实现分组多用户的创建和权限分配
  2. WPS广告弹窗永久关闭
  3. FLUKE OTDR光纤断点测试仪OFP2-100-Q特色功能及亮点分析
  4. markdown语法测试
  5. 《程序员》5月刊精彩内容预告
  6. DTIM间隔在组播和节电方面的综合考虑
  7. c语言pow函数原型_C语言pow函数
  8. pr字幕一个一个出现的笨方法
  9. 微信公众号/订阅号怎么用互动伴侣小程序开通留言功能?
  10. 数字后端概念——shielding