网站首页 > 知识剖析 正文
两幅扑克牌,共108张牌,每张牌编码成一个10进制整数,编码规则如下:
花色顺序:[黑桃:0 红桃:1 梅花:2 方块:3]
每张牌占据1-128中的一个数字。其中1到64为A牌,65到128为B牌,每16个数字占用一个花色,每个花色实际占用13张,比如1-13是黑桃A到黑桃K,17-29是红桃A到红桃K, 以此类推。
大小王分别是 63、64、127、128.
具体牌值分布如下:
黑桃:range(1, 13),
红桃:range(17, 29),
梅花:range(33, 45),
方块:range(49, 61),
黑桃:range(65, 77),
红桃:range(81, 93),
梅花:range(97, 109),
方块range(113, 125)
通配牌,俗称赖子:大王、小王、所有牌值是2的牌,如红桃2,黑桃2,方片2,梅花2. (2牌如果作为普通牌需要考虑花色,如果作为通配牌可以替代任意牌。)。 通配牌是指可以替代任意牌的牌。
同花顺序排序:同样花色的
牌按照从小到大排列即可,最长的同花顺序是从A到A,比如黑桃同花顺:[1,2,3,4,5,6,7,8,9,10,11,12,13,65]。 注意赖子牌可以替代任意牌与其他牌组成同花顺。注意,只要按照同样花色从小到大排序即可,不一定是必须连续牌值(因为输入部分是随机的部分牌)
以下是几个例子:
输入:[3, 65, 66] 输出:[65, 66, 3]
输入:[34, 98, 82, 35]输出 :[34, 35, 82, 98]
输入:[82, 98, 34, 35]输出:[34, 35, 82, 98 ]
输入:[113, 59, 61, 114, 50] 输出 [50, 59, 114, 61, 113]
输入:[114, 82, 83, 84, 21, 23, 24, 25] 输出 [82, 83, 84, 21, 114, 23, 24, 25]
输入:[114, 82, 83, 84, 21, 23, 24, 25, 66, 27, 28, 93, 81] 输出 [81, 82, 83, 84, 21, 114, 23, 24, 25, 66, 27, 28, 93]
写一个函数, 输入是元素为不重复整数的一维数组,输出也是一个数组,实现.按照最长同花从小到大原则同花顺序排序的功能。
说实话这题目我一开始没看明白。
后来我感觉我看明白了。有大佬指点一二吗?
于是用php写下如下版本:
<?php
Function sortCards(array $input):?array {
if (empty($input)) {
return [];
}
$arr1 = $arr2 = [];
// 把第二幅牌的拆出来。
foreach ($input as $num) {
// 数据错误
if ($num < 1 || $num > 128) {
return [];
}
if ($num > 64) {
$key = $num - 64;
$map[$key] = $num;
$arr2[] = $key;
} else {
$arr1[] = $num;
}
}
sort($arr1);
sort($arr2);
$len1 = count($arr1);
$len2 = count($arr2);
$len = max($len1, $len2);
// 类似合并2个有序链表
$j = 0;
for ($i = 0; $i < $len;) {
if (!isset($arr1[$i]) || !isset($arr2[$j])) {
break;
}
if ($arr1[$i] <= $arr2[$j]) {
$rs[] = $arr1[$i];
$i++;
} else {
$rs[] = $map[$arr2[$j]];
$j++;
}
}
while($i < $len1){
$rs[] = $arr1[$i++];
}
while($j<count($arr2)){
$rs[] = $map[$arr2[$j++]];
}
return $rs;
}
$input = [114, 82, 83, 84, 21, 23, 24, 25];
// $input = [82, 98, 34, 35];
$input = [65, 66, 3];
$rs = sortCards($input);
var_dump($rs);
猜你喜欢
- 2024-11-26 javascript sort()方法
- 2024-11-26 排序神器,SORT与SORTBY函数用法详解,解决多年老问题
- 2024-11-26 本科、专科、高中、自定义排序不再痛苦!函数学习SORTBY
- 2024-11-26 深入浅出Redis:Redis的排序命令Sort
- 2024-11-26 Excel 多条件排序函数SORTBY,不同数据区域指定不同排序方式
- 2024-11-26 Arrays.sort()方法到底用的什么排序算法(1)
- 2024-11-26 Arrays.sort()方法到底用的什么排序算法(2)
- 2024-11-26 C语言编程实例5
- 2024-11-26 Excel 数据自动排序函数SORT,数据排序原来如此简单
- 2024-11-26 我排序2分钟,同事用sort函数排序几秒,排序结果还能自动更新
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)