同花顺判断 题目描述 什么是同花顺:5张牌,牌面数字能够连续,则是顺子;花色相同则为同花;能找出5张花色相同且牌面数字连续的,即是同花顺。 特殊规则:A,既能和2,3,4,5 连成顺子,也能和10,J,Q,K连成顺子 使用 JavaScript 实现判断 8 张牌中是否有 5 张可以组成同花顺
ts
interface card{
huase:'A'|'B'|'C'|'D'
value:number
}
const isShunzi = (arr:card[]) =>{
const mapp = {
'A':0,
'B':0,
'C':0,
'D':0
}
for(const key in mapp) {
mapp[key] = 0;
}
arr.sort((a,b)=>{
return b.value - a.value
})
const set = new Set()
const arr2:any[] = arr.map(item=>{
if(!set.has(item.value)){
set.add(item.value)
return item
}else{
mapp[item.huase]++
return null
}
}).filter(Boolean)
if (arr2.length < 5) return false
for(const key in mapp){
if (mapp[key] >= 5){
continue
} else {
return false
}
}
const len = arr2.length
for(let index=0;index<len-4;index++){
let flag = arr2[index].huase
if(arr2[index].value === 1){
for(let idx = 1; idx <= 4; idx++) {
if(arr2[len-idx].huase !== flag) {
return false // 直接返回 false
}
}
}
if(arr2[index].value + 4 !== arr2[index+4].value) {
return false
}
for(let idx = 1; idx <= 4; idx++) {
if(arr2[index+idx].huase !== flag) {
return false // 直接返回 false
}
}
}
return true;
}