同事问如何判断同花顺,我用javascript的二维数组写了个简易demo

有个前同事在群里问如何判断是否为同花顺我用javascript的二维数组写了个简易demo。

<!DOCTYPE html>
<html>
<body>
<script>
/* 判断是否为顺子 */
function isStraight(arrs) {
    arrs.sort();//排序
    
    var first = arrs[0][0]; //取出第一个最小的数
    var index = 1;//从第二个开始索引
    while(arrs.length > index){
        first++;
        if(first != arrs[index][0]) {
            //如果不相等代表不连续
            return false;
        }
        index++;
    }
    return true;
}

/* 判断是否为同花 */
function isFlush(arrs) {
    var flower = arrs[0][1]; //取出第一个花
    var index = 1;//从第二个开始索引
    while(arrs.length > index){
        if(flower != arrs[index][1]) {
            //如果不相等代表不是同花
            return false;
        }
        index++;
    }
    return true;
}

function vaild(name, arrs) {
    var result = isStraight(arrs) && isFlush(arrs);
    var msg = "顺子同花分开判断 " + name + ": " + arrs.toString()+"\r\n";
    if(result) {
        msg += "这是同花顺";
    } else {
        msg += "这不是同花顺";
    }
    
    document.write(msg);
}

/* 判断是否为同花顺 */
function isStraightFlush(arrs) {
    arrs.sort();//排序
    
    var first = arrs[0][0]; //取出第一个最小的数
    var flower = arrs[0][1]; //取出第一个花
    var index = 1;//从第二个开始索引
    while(arrs.length > index){
        first++;
        if(first != arrs[index][0] || flower != arrs[index][1]) {
            //如果两个条件任意一个不相等代表不连续或不是同花
            return false;
        }
        index++;
    }
    return true;
}

function vaild2(name, arrs) {
    var result = isStraightFlush(arrs);
    var msg = "同花顺同时判断 " + name + ": " + arrs.toString()+"\r\n";
    if(result) {
        msg += "这是同花顺";
    } else {
        msg += "这不是同花顺";
    }
    
    document.write(msg);
}

/*
 * 为了演示,以下数字为扑克牌每种花的代码定义
 * 111 = 黑桃
 * 222 = 红心
 * 333 = 黑梅
 * 444 = 红方
 */
var pokers1=[[3,111],[5,111],[4,111],[6,111],[2,111]];//这是一个无序但连续且同花的二维结构数组
var pokers2=[[9,111],[5,222],[4,444],[6,333],[8,111]];//这是一个无序且不连续且不同花的二维结构数组

vaild("pokers1",pokers1);
document.write("<br/>");
vaild("pokers2",pokers2);
document.write("<br/>");
document.write("<br/>");
vaild2("pokers1",pokers1);
document.write("<br/>");
vaild2("pokers2",pokers2);
document.write("<br/>");
</script>

</body>
</html>

转载于:https://www.cnblogs.com/VAllen/p/pokers-is-straight-flush.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值