-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path是否为同花顺.js
57 lines (53 loc) · 2.28 KB
/
是否为同花顺.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
从一副扑克牌中随机抽取5张牌 判断这五张牌是否是一个同花顺
同花顺:点数连续 花色相同
大小王可以当做任意点数任意花色的牌
{
v: 1,
color: 'red',
isJoker: false
}
*/
var a1 = [{ "v": 3, "color": "r" }, { "v": 1, "color": "r" }, { "v": 2, "color": "r" }, { "v": 5, "color": "r" }, { "v": 4, "color": "r" }], // true
a2 = [{ "v": 7, "color": "r" }, { "v": 1, "color": "r" }, { "v": 2, "color": "r" }, { "v": 5, "color": "r" }, { "v": 4, "color": "r" }], // false 不连续
a3 = [{ "v": 3, "color": "r" }, { "v": 1, "color": "g" }, { "v": 2, "color": "r" }, { "v": 5, "color": "r" }, { "v": 4, "color": "r" }], // false 不同色
a4 = [{ isJoker: true }, { "v": 1, "color": "r" }, { "v": 2, "color": "r" }, { "v": 5, "color": "r" }, { "v": 4, "color": "r" }], // true 有一张王,中间缺数据补中
a5 = [{ isJoker: true }, { "v": 1, "color": "r" }, { "v": 2, "color": "r" }, { "v": 3, "color": "r" }, { "v": 4, "color": "r" }], // true 有一张王,中间缺数据补边
a6 = [{ isJoker: true }, { isJoker: true }, { "v": 2, "color": "r" }, { "v": 5, "color": "r" }, { "v": 4, "color": "r" }], // true 有两张王,中间缺数据补边
a7 = [{ isJoker: true }, { isJoker: true }, { "v": 1, "color": "r" }, { "v": 3, "color": "r" }, { "v": 4, "color": "r" }] // true 有两张王,中间缺数据补中
function Foolish(arr) {
let t = 5;
let set = new Set();
let r = true;
let colorFlag = '';
let jokerNum = 0;
for (let i = 0; i < t; i++) {
const item = arr[i]
if (item.isJoker) {
jokerNum++
continue
}
if (colorFlag === "") {
colorFlag = item.color;
}
if (colorFlag !== item.color) {
r = false;
break;
}
colorFlag = item.color
set.add(item.v)
}
if ((set.size + jokerNum) === t) {
const rarr = Array.from(set).sort((a, b) => a - b)
const d = rarr[rarr.length - 1] - rarr[0]
if (d > ((t - 1) - jokerNum) && d <= (t - 1)) {
r = true
} else {
r = false
}
} else {
r = false
}
return r;
}
console.log(Foolish(a1),Foolish(a2),Foolish(a3),Foolish(a4),Foolish(a5),Foolish(a6),Foolish(a7))