同事问如何判断同花顺,我用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>
posted @ 2018-05-09 15:41  VAllen  阅读(645)  评论(0编辑  收藏