• 同事问如何判断同花顺,我用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()+"
    ";
    	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()+"
    ";
    	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>
    
  • 相关阅读:
    迭代器求迄今为止所有的闰年
    记录列表中每个元素被访问的次数
    访问修改属性日志
    描述符
    摄氏与华氏转变
    【bzoj1925】[Sdoi2010]地精部落 组合数学+dp
    【bzoj1280】Emmy卖猪pigs 最大流
    【bzoj1449/bzoj2895】[JSOI2009]球队收益/球队预算 费用流
    【bzoj2721】[Violet 5]樱花 数论
    【bzoj4810】[Ynoi2017]由乃的玉米田 莫队算法+STL-bitset
  • 原文地址:https://www.cnblogs.com/VAllen/p/pokers-is-straight-flush.html
Copyright © 2020-2023  润新知