2023年3月10日 星期五

EMaji - 百花齊放

牌桌上排列組合 泥捨得解開嗎 🧐🤠

承上啟下

前篇 只考慮1種花色,萬


麻將裡一共有10種花色

可以組成眼、刻子、順子的有3種

第1種:🀇🀈🀉🀊🀋🀌🀍🀎🀏

第2種:🀐🀑🀒🀓🀔🀕🀖🀗🀘

第3種:🀙🀚🀛🀜🀝🀞🀟🀠🀡

可以組成眼、刻子的有7種

其他7種:🀀🀁🀂🀃🀄🀅🀆


牌的表示法

手上有17張牌,可寫成
3 3 3 3 3 2

手上有16張牌,可寫成
3 3 3 3 3 1

1 = 單
2 = 眼
3 = 刻子 or 順子

3 3 3 3 3 2
上面的3和2可能同花色,可能不同
又可寫成
3 3 3 3 3 2 ➡️ (3n)*、(3n+2) 1次
* = 出現0次或多次

術語

XX_nAAA_mABC測試

就是原文定理1
時間複雜度是 N

找眼測試

(3n+2)裡,可能存在N個候選眼 
每個候選眼都要進行XX_nAAA_mABC測試
時間複雜度是 N*N

+1

指得是列出N個候選牌 
讓(3n+1)變成(3n+2)

+1找眼測試

對N個候選牌,跑一次找眼測試
時間複雜度是 N*N*N

一、各個擊破法

台麻胡牌的情況1定是17張

3 3 3 3 3 2


胡牌前會少1張,有下面幾形

形1:3 3 3 3 3 1 ➡️ (3n)*、(3n+1) 1次

形2:3 3 3 3 2 2 ➡️ (3n)*、(3n+2) 2次


形2中的2個2都是同花色,就會出現

形2 of  形1:3 3 3 3 4 ➡️ (3n)*、(3n+1) 


畫成文式圖就是

圖一
粉紅:3 3 3 3 3 1
水藍:3 3 3 3 2 2

圖二
粉紅形(3n)*、(3n+1) 1次
水藍形(3n)*、(3n+2) 2次

有了圖二

想知道聽幾個洞,就可以分別處理

遇到粉紅形時:

對所有(3n)進行是否為(3n)測試

眼在(3n+1)

對(3n+1)做+1找眼測試

最多會列出9張候選牌(1萬到9萬)


遇到水藍形時:

對所有(3n)進行是否為(3n)測試

眼已經在其中1個(3n+2)裡面

有眼的(3n+2),要進行1次找眼測試

沒眼的(3n+2),要做+1是否為(3n)測試

最多會列出9張候選牌(1萬到9萬)


假如2個(3n+2) 分別叫A和B

可能是A有眼B沒眼

也可能是A沒眼B有眼

所以+1是否為(3n)測試

最多會列出18張候選

From wiki

二、原文的分組

原文的分組方法非常巧妙(定理2)

組 🀇🀊🀍

組 🀈🀋🀎

組 🀉🀌🀏


胡牌時,使用上面的分組方法

3 3 3 3 3 2 ,可以畫成

組 1 3

組 1 3 3 3 2

組 1


或這樣

組 。(。。。)

組 。(。。。) (。。。) (。。。) (。。)

組 。

    ⬆️ 

   順子

順子和刻子會互相垂直 🧐


牌數總合為

組 ( 1+3 )  = 4

組 ( 1+3+3+3+2 ) = 12

組 ( 1 )  = 1


求餘數後

組 ( 1+3 ) % 3 = 1

組 ( 1+3 +3+3+2 ) % 3 = 0

組 ( 1 ) % 3 = 1

就能找到眼在那個組


使用各個擊破法

不同的花色,有自己的分組

組 🀇🀊🀍

組 🀈🀋🀎

組 🀉🀌🀏


組 🀐🀓🀖

組 🀑🀔🀗

組 🀒🀕🀘


三、摻在一起做撒尿牛丸

各個擊破法暴力

好處是,只需要做+1找眼測試

有種一以貫之的爽快感


找眼測試比較

原文的分組

組 🀇🀊🀍

組 🀈🀋🀎

組 🀉🀌🀏

已知眼在其中1組,找眼測試最多3個候選眼


擴充後的分組

組 🀇🀊🀍 🀒🀕🀘 🀚🀝🀠 🀀🀃🀆

組 🀈🀋🀎 🀐🀓🀖 🀛🀞🀡              🀁🀄

組 🀉🀌🀏 🀑🀔🀗 🀙🀜🀟 🀂🀅

乍看之下

已知眼在其中1組

找眼測試最多11~12候選眼

但,才17張牌 

n*2+1 = 17n 最大為8

如果再加上窮舉優化

找眼測試最多不會超過3個候選(下面會再詳述)


候選牌數比較

原文的分組

組 🀇🀊🀍

組 🀈🀋🀎

組 🀉🀌🀏

+1,要列出9張候選牌:

🀇🀈🀉🀊🀋🀌🀍🀎🀏


擴充後的分組

組 🀇🀊🀍 🀒🀕🀘 🀚🀝🀠 🀀🀃🀆

組 🀈🀋🀎 🀐🀓🀖 🀛🀞🀡              🀁🀄

組 🀉🀌🀏 🀑🀔🀗 🀙🀜🀟 🀂🀅

+1,要列出34張候選牌


配合圖二的形判定

+1,最多只要列出18張候選牌


四、窮舉優化 n*2+1 = 17

假設,已知眼在中間組

中間組裡有8個眼,8*2+1 = 17 

不可能胡牌


中間組裡有7個眼,7*2+3 = 17

不可能胡牌


中間組裡有6個眼,6*2+5 = 17

6*2+1+1+1+1+1 = 6*2+。+。+。+。+。 = 17

只有1種胡牌可能 

組 (2。)(2。)(2。)(2。)(2。) (2) = 3 3 3 3 3 (2)

3 3 3 3 3 (2)的情況,找眼測試1個候選眼


中間組裡有5個眼,5*2+7 = 17

胡牌的可能比較多

可能是:

組 。。

組 (1 1)(2。)(2。)(2。) (2) (2) 3 3 3 (2)

組 。。

(2) 3 3 3 (2) 的情況,找眼測試2個候選眼


也可能是:

組 。 

組 。 (2 。)(2。)(2。)(2。) (2) 

組 。

    ⬆️

   順子

3 3 3 3 (2) 1 的情況,找眼測試1個候選眼

4 3 3 3 (2),找眼測試1個候選眼

3 3 3 3 3,找眼測試5個候選眼 減去 | 可優化成3 3 3 3 (2)


或者是:

組  

組 (2 。)(2。)(2。)(2。) (2)  = 3 3 3 3 (2)

組 (。。。) = 3

3 3 3 3 (2) 的情況,找眼測試1個候選眼


中間組裡有4個眼,4*2+9 = 17

胡牌的可能比較多

可能是:

組 。。。。

組 (1 1)(1  1)(2。)(2) (2)(2(2)

組 。。。。

(2)(2) 3 (2)的情況,找眼測試3個候選眼


可能是:

組 。。。

組 (1 1) (2。)(2。)(2) (2) 1 3 3 (2)

組 。。。

(2) 1 3 3 (2)的情況,找眼測試2個候選眼


可能是:

組 。。

組 。。(2。)(2。)(2。) (2) 

組 。。

3 3 3 (2) 1 1 的情況,找眼測試1個候選眼

3 3 3 1 的情況,找眼測試4個候選眼

4 3 3 (2) 1 的情況,找眼測試1個候選眼

4 4 3 (2) 的情況,找眼測試1個候選眼

4 3 3 的情況,找眼測試3個候選眼


可能是:

組 。

組 。(2。)(2。)(2。) (2) 

組 。 (。。。) 

3 3 3 (2) 1 的情況,找眼測試1個候選眼

4 3 3 (2) 的情況,找眼測試1個候選眼

3 3 3 3 的情況,找眼測試4個候選眼


可能是:

組 

組 (2。)(2。)(2。) (2) 

組 (。。。)  (。。。) 

3 3 3 (2) 的情況,找眼測試1個候選眼


伍、參考資料


沒有留言:

張貼留言