Re: [問題] 以Java做麻將判別胡牌或聽牌的程式
※ 引述《ChonPiggy (崇小豬)》之銘言:
: 12344456777999 123 這樣..
: 一開始把444 777 999 拿掉..
: 剩下123 56 123 這樣也不能胡了呀@@
: 我到底該怎麼判斷才好..
: 或者應該是其他方式?
我會用第二個方法,不過修改一點...
11223344456777999 先抽出三張的
([444][777][999]) 剩 11223356
然後抽出順子
([444][777][999]) ([123][123]) 剩 [56]
若剩下的牌多過兩張,則不能胡
若剩下的兩張為將眼 -> 胡牌
看看剩下兩張牌 (i, j) 的 j-i 值
j-i > 2,不能胡
j-i == 2,查看三張組裡有沒有在中間的牌,有的話即可湊回順子和將眼,胡牌
例: 如剩下的是 3, 5.... 在三張中有 [444],可湊成 [345][44]
j-i == 1,查看三張組中有沒有 (i-1) 或 (j+1) 的牌,有即胡...
大概像這樣,不過不知道能否應付所有的牌型 :P
==== 加按 ====
哈哈,睡到床上後想到一個不能應付的例子: 444 777 XXX XXX 35678
XXX 為不同花色的三張或順子 (麻將嘛....)
依上面的情況一排... 啊 444 777 XXX XXX 567 (3,8) 不能胡? 壞了...
這個情況,就要從抽完三張後重新再來,把剩下的牌 由大至小排序 :
([444] [777]) (87653) (XXX XXX) <-- 這一堆永遠不用理會
然後也是抽順子... ([444] [777]) ([876]) 剩 (5,3)
這樣就能胡了...
所以抽順子那邊要先順序抽一次看看能不能胡,不能的話倒轉順序抽一次看看
==== 加按完畢,睡覺去 XD 不知道會否又想到一些偵測不到的牌型 XD ====
--
勁過呂布的勁過相簿...
http://www.pixnet.net/superlubu
亂七八糟的,不好意思 m(_ _)m
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.218.38.49
※ 編輯: superlubu 來自: 203.218.38.49 (06/12 00:08)
推
06/12 00:10, , 1F
06/12 00:10, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):