php牛牛发牌算法,分享一个牛牛算法
分享一个算法计算牛牛的。
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牛牛发牌算法,分享一个牛牛算法相关推荐
- 基于机器学习k-近邻算法完成一个电影是爱情片还是动作片的判断
k-近邻算法 k-近邻算法,又称为KNN,在机器学习领域k-近邻算法是比较常用的经典算法之一,KNN算法是一个分类算法,它归于实例学习和懒惰学习,它的原理很简单: 为了判断未知实例样本的类别,以所有已 ...
- 十大机器学习算法的一个小总结
在公众号看到来一篇不错的文章,讲解机器学习算法的,感觉挺好的,所以这里对常用的机器学习算法做一个小的总结, 然后根据学习李航老师的<统计学习方法>做得笔记,对这些算法进行补充. 简介 ...
- 大数据算法 chap-2 亚线性算法
亚线性算法 2.1 亚线性算法的定义 2.2 水库抽样-空间亚线性算法 2.3 平面图直径-时间亚线性计算算法 2.4 全0数组判定-时间亚线性判定算法 2.1 亚线性算法的定义 亚线性:比线性消耗更 ...
- 【算法学习】贪心算法
参考算导第三版第16章 贪心算法 文章目录 1. 活动选择问题 1.1 活动选择问题的最优子结构 1.2 贪心选择 1.3 递归贪心算法 1.4 迭代贪心算法 2. 贪心算法原理 2.1 贪心选择性质 ...
- 机器学习数据挖掘十大经典算法 数学建模常用算法
国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006 (香港召开)年12月评选出了数据挖掘领域的十大经典算法.不仅 ...
- 激光SLAM之NDT算法(1)算法原理
/在激光SLAM之NDT算法(2)-建图中我会给出实测可用的建图代码,并予以解释代码结构,这里就先讲讲原理吧!!!/ 无人车激光SLAM系统简单可以分为建图和定位两部分,无人车的定位问题,实际上就是要 ...
- 分享一个开源的项目,数据结构和算法必知必会的50个代码实现
数据结构和算法必知必会的50个代码实现 这个开源项目是有前Google工程师打造出来的,使用了c,go,java,python,php等很多中语言实现了一些数据结构和算法,对于喜欢算法的来说可谓是一个 ...
- php 冒泡查找 降序 随机数 封装,又一个PHP实现的冒泡排序算法分享
又一个PHP实现的冒泡排序算法分享 经典的冒泡排序法一直是许多程序沿用的其中一种排序法,话说冒泡排序法在效率上比PHP系统函数sort更高效.本章不讨论性能,所以就不拿它来跟系统性能做对比了. 冒泡排 ...
- python点云快速配准_分享一个V-SLAM中点云配准算法改进的方法
近年来,随着自主导航的广泛应用,视觉同时定位与地图构建(Visual simultaneous localization and mapping, V-SLAM)通过自身携带的视觉传感器对周围环境进行 ...
- 分享一个JAVA专业接口开发利器,牛牛牛新鲜出炉!!!
分享一个JAVA专业接口开发利器,集成在线接口文档 Swagger-ui,采用Jwt Token验证机制,最牛在于业务restful接口代码自动生成,更更牛的在接口可以做细化权限控制(例如:不同开发商 ...
最新文章
- 一文读懂对抗生成网络的3种模型
- Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示
- assume用法及意思_分享assume 的几种用法~
- EDGE X Kubernetes Meetup·杭州站:云原生在边缘的实践与应用
- [导入]ASP.NET 2.0中Page事件的执行顺序
- 【Python CheckiO 题解】The Most Wanted Letter
- windows 使用qtcreater编译boost 测试
- 如何用2分钟做出一张拥有“黑洞”和“脑洞”的热力地图?
- 第一次做项目经理总结_工程总承包项目:项目经理如果是第一次做,一定要把握这4个要点...
- mac下直接下载xcode的地址
- Mac下Alt键配置
- C++实现Base32加解码
- python实现登录抓取_[Python]网络爬虫(五):利用POST方式登录账号抓取
- matlab 画三维图像
- 将html导出为PDF文件(为PDF加盖章)
- [玩法/技巧] Transmission 3.0 降级到 2.94 恢复数据的方法
- 知云文献翻的一些使用
- 手机话费充值接口,实现话费充值功能接入
- 如何在Python中使用Tushare进行股票日线行情获取并存储至数据库
- uni-app 使用u-echarts图表插件步骤(圆环)