【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

相关文章

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依