【PHP】从一副扑克中随机抽5张,并输出结果是不是顺子?(时间60分钟)

2024-01-26 03:58

本文主要是介绍【PHP】从一副扑克中随机抽5张,并输出结果是不是顺子?(时间60分钟),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

从一副扑克中随机抽5张,并输出结果是不是顺子?

写这个小功能,是去年年底面试遇到的题,花了一个多小时才做完但结果并不让人满意,回家后反思好长一段时间。今天又看到这个让我心情咯噔一下的题,决定再做一遍

主体函数

//输出
function ouput($data)
{$string = '';$arr = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];$colorBlock = [0 => '黑桃', 1 => '红桃', 2 => '梅花', 3 => '方块'];foreach ($data as $row) {$string .= sprintf("%s%s ", $colorBlock[$row['color']], $arr[$row['number']]);}$straight = isStraight(array_column($data, "number"));return ["msg" => $string, "straight" => $straight];
}// 获取颜色和数字
function getPoker()
{for ($i = 0; $i < 5; $i++) {$list[] =  ['color' => rand(0, 3), 'number' => rand(0, 12)];}return $list;
}//是否顺子
function isStraight($list)
{if (count($list) != 5) {return '发牌数量错误';}//升序sort($list);//提前设定可能出现的情况$string = '0,1,2,3,4,5,6,7,8,9,10,11,12;0,9,10,11,12;0,1,10,11,12;0,1,2,11,12;0,1,2,3,12;';if(strpos($string , join(',', $list))){return  "是顺子";}return "不是顺子";
}

调用并输出

// 输出颜色和数字
$data = getPoker();
$res = ouput($data);
echo  $res["msg"] . "<br>" . $res["straight"];

输出结果1:
方块4 梅花6 红桃5 黑桃7 红桃3
是顺子

输出结果2:
方块A 方块2 方块8 黑桃4 梅花9
不是顺子

测试用例:

$data = [["color" => 0, "number" => 1],["color" => 3, "number" => 3],["color" => 2, "number" => 2],["color" => 3, "number" => 5],["color" => 1, "number" => 4]
];
$res = ouput($data);
echo  $res["msg"] . "<br>" . $res["straight"];

输出:
黑桃2 黑桃4 红桃3 梅花6 方块5
是顺子

这篇关于【PHP】从一副扑克中随机抽5张,并输出结果是不是顺子?(时间60分钟)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/645578

相关文章

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Python使用Colorama库美化终端输出的操作示例

《Python使用Colorama库美化终端输出的操作示例》在开发命令行工具或调试程序时,我们可能会希望通过颜色来区分重要信息,比如警告、错误、提示等,而Colorama是一个简单易用的Python库... 目录python Colorama 库详解:终端输出美化的神器1. Colorama 是什么?2.

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

使用C#如何创建人名或其他物体随机分组

《使用C#如何创建人名或其他物体随机分组》文章描述了一个随机分配人员到多个团队的代码示例,包括将人员列表随机化并根据组数分配到不同组,最后按组号排序显示结果... 目录C#创建人名或其他物体随机分组此示例使用以下代码将人员分配到组代码首先将lstPeople ListBox总结C#创建人名或其他物体随机分组

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

Java将时间戳转换为Date对象的方法小结

《Java将时间戳转换为Date对象的方法小结》在Java编程中,处理日期和时间是一个常见需求,特别是在处理网络通信或者数据库操作时,本文主要为大家整理了Java中将时间戳转换为Date对象的方法... 目录1. 理解时间戳2. Date 类的构造函数3. 转换示例4. 处理可能的异常5. 考虑时区问题6.