【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

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

MySQL按时间维度对亿级数据表进行平滑分表

《MySQL按时间维度对亿级数据表进行平滑分表》本文将以一个真实的4亿数据表分表案例为基础,详细介绍如何在不影响线上业务的情况下,完成按时间维度分表的完整过程,感兴趣的小伙伴可以了解一下... 目录引言一、为什么我们需要分表1.1 单表数据量过大的问题1.2 分表方案选型二、分表前的准备工作2.1 数据评估

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

MySQL中DATE_FORMAT时间函数的使用小结

《MySQL中DATE_FORMAT时间函数的使用小结》本文主要介绍了MySQL中DATE_FORMAT时间函数的使用小结,用于格式化日期/时间字段,可提取年月、统计月份数据、精确到天,对大家的学习或... 目录前言DATE_FORMAT时间函数总结前言mysql可以使用DATE_FORMAT获取日期字段