// 牌值
var cardvalue = [
1,2,3,4,5,6,7,8,9,
11,12,13,14,15,16,17,18,19,
21,22,23,24,25,26,27,28,29,
31,41,51,61,71,81,91
]// 定撲
function ispu(cards, laizinum)
// 順子判斷
var index = 1;
if (cards[0] < 30)
if(cards[0] > 30)
for (var i = 0; i < 3; i++)
// 順子長度
var shuncount = 0;
for (var j = 0; j < 3; j++)
}if (shuncount == 3 || shuncount + laizinum >= 3)
else
}if (ispu(pucards, pulaizi)) }}
}// 刻子判斷
var kezicount = 1;
var kezicard = cards[0];
if (cards[1] == kezicard)
if (cards[2] == kezicard)
if (kezicount == 3 || kezicount + laizinum >= 3)
else
}if (ispu(pucards, pulaizi))
}return false;
}// 定將
function isjiang(cards, laizinum)
// 找到對子、或是用一張癩子拼出的對子
if ((i + 1 < cards.length && cards[i] == cards[i + 1]) || laizinum > 0)
else
// 刪去對子判斷剩下的牌是否成撲
if (ispu(pucards, pulaizi)) }}
// 兩個癩子做將牌
if (laizinum >= 2 && ispu(cards, laizinum - 2))
}// 判斷胡牌(東南西北 中發白成順)
function islaizihu(cards, laizinum)
// 排序
cards.sort(function(a, b) )
var ishu = isjiang(cards, laizinum)
if (ishu)
return false;
}
麻將胡牌演算法,帶癩子
貌似去年去面試一家公司,問了麻將的演算法。雖然之前做過廣東麻將,但是胡牌演算法在服務端,就沒有在意。現在在網上搜了一些演算法試了試 麻將普通的胡牌就是刻子 順子 將。癩子可以充當任意一張牌。網上蒐羅的演算法,先取將牌,然後遞迴判斷剩下的牌是否能組成刻子或順子。public canhulaizi ca...
棋牌麻將 無癩子胡牌演算法
本文涉及的所有名詞均在博文中有說明 去除雜念 由於字牌中只只允許出現對子和刻子,所以單獨處理字牌.返璞歸真 萬 筒 條牌等序數牌處理除了花色不同其他規則一致,所以忽略序數牌花色進行處理.分而治之 序數牌中存在關係的牌必須是連續的,不連續的牌之間不會存在關係,所以對連續牌進行分片.各司其職 單一分片能...
麻將胡牌判決
胡牌有以下幾種情況 1 乙個對子 4組 3個相同的牌或者順子。只有m s p是可以構成順子的。東西南北這樣的牌沒有順子。2 7個不同的對子。3 1m,9m,1p,9p,1s,9s,1c,2c,3c,4c,5c,6c,7c.這13種牌每種都有,而且僅有這13種牌。肯定是有一種2張。其他的1張。首先是列...