程式設計(一) 第十二週 共筆 === ## 麻將規則 - 萬 1~9 - 筒 1~9 - 條 1~9 - 字牌 東南西北中發白 - 兩個一樣的稱為 "將" - 三個一樣 "刻" - 萬筒條連續三張的 稱為 "順" :::success 勝利條件 若干組「刻、順」加上一組「將」即為“胡牌” ::: ## 上課程式 ```python= # give 3n+2 card, check if can hu # eg, 1112345678999, 胡了嗎? # card: number of each card, 萬9筒9條9字7, 一共34種牌 # n: card裡面一共有幾張牌 # needMJ: 需要選一對當MJ? def canHu(card, n, needMJ = True) : if n == 0 : return True if needMJ == True : for i in range(0, 34) : if card[i] >= 2 : card[i] -= 2 ans = canHu(card, n - 2, False) card[i] += 2 if ans == True : return True # check 3 cards for i in range(0, 34) : if card[i] >= 3 : card[i] -= 3 ans = canHu(card, n - 3, needMJ) card[i] += 3 if ans == True : return True if i < 27 and i % 9 < 7 and card[i] > 0 and card[i+1] > 0 and card[i+2] > 0 : card[i] -= 1 card[i+1] -= 1 card[i+2] -= 1 ans = canHu(card, n - 3, needMJ) card[i] += 1 card[i+1] += 1 card[i+2] += 1 if ans == True : return True return False def main() : card = [4,1,1,1,1,1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] print(canHu(card,14)) main() ``` 送大家寫功課的好東西 ```python= lis =['一萬','二萬','三萬','四萬','五萬','六萬','七萬','八萬','九萬','一筒','二筒','三筒','四筒','五筒','六筒','七筒','八筒','九筒','一條','二條','三條','四條','五條','六條','七條','八條','九條','東','南','西','北','中','發','白'] `` 這樣就不用自己打了