第 6 講:顯性數(shù)組
講完了隱性數(shù)組后,可以發(fā)現(xiàn)隱性數(shù)組用了排除來(lái)作為輔助的操作,那么下面要講的第二種數(shù)組結(jié)構(gòu)——顯性數(shù)組,可以猜得到,肯定用的是唯一余數(shù)了。
Part 1 顯性數(shù)對(duì)(Naked Pair)

如圖所示,仔細(xì)觀察r19c7,對(duì)r19c7兩格使用唯一余數(shù)的辦法,可以發(fā)現(xiàn),這兩個(gè)最終都只能填入3或8。它們剛好同列,這就使得r1c7是3的話(huà),r9c7就只能是8;反之亦然。
不論怎么填,這兩個(gè)單元格顯然是只可以填入3和8的,而且填的數(shù)字還不一樣。這樣一來(lái),我們就能保證c7里數(shù)字3和8必須出現(xiàn)在r19c7里了,進(jìn)而可以得到c7里的其余單元格都不能是3和8。
接著我們可以利用這一點(diǎn),對(duì)r4作行排除,數(shù)字8此時(shí)只有r4c9可填,所以r4c9 = 8。
這個(gè)例子優(yōu)秀的地方在于,r19c7不像剛才的隱性數(shù)組一般,它對(duì)區(qū)域其它單元格作出了填數(shù)情況的排除,并非自己涉及的單元格。之所以叫顯性數(shù)組,就是因?yàn)樗慕Y(jié)構(gòu)里沒(méi)有其它雜七雜八的數(shù)字,比如這個(gè)例子里,r19c7里只有3和8,很“干凈”。這個(gè)例子涉及兩格,所以叫做顯性數(shù)對(duì)(Naked Pair)。
Part 2 顯性三數(shù)組(Naked Triple)

如圖所示,仔細(xì)觀察b2,通過(guò)唯一余數(shù)技巧數(shù)數(shù)你就會(huì)發(fā)現(xiàn),{r1c5, r3c45}三格只能填入1、2、6。由于它們同處于一個(gè)宮,所以它們的填數(shù)一定互不相同;而且剛好三格,填入的數(shù)字就只可能是三個(gè)不同的數(shù)字1、2、6,也就是一個(gè)1、一個(gè)2、一個(gè)6。
我們此時(shí)轉(zhuǎn)去觀察r3c6,由于r3c6和{r1c5, r3c45}同處于一個(gè)宮,所以它的填數(shù)就不能是1、2、6了。那么,我們對(duì)r3c6再一次使用唯一余數(shù),最終發(fā)現(xiàn)r3c6只能是8,所以r3c6 = 8。
這個(gè)結(jié)構(gòu)和顯性數(shù)對(duì)的思路是類(lèi)似的,不過(guò)結(jié)構(gòu)占了三格,所以我們稱(chēng)為顯性三數(shù)組(Naked Triple)。
Part 3 顯性四數(shù)組(Naked Quadruple)

如圖所示,這個(gè)例子有點(diǎn)難。著重觀察b7里的{r8c2, r789c3}四格,這樣四格恰都只包含4、6、7、9四種不同的數(shù)字,別無(wú)其它。由于它們同處于b7,這使得它們內(nèi)部的填數(shù)是不可以一樣的,又因?yàn)榍『盟母竦木壒?,所以最終四格的填數(shù)只能是一個(gè)4、一個(gè)6、一個(gè)7和一個(gè)9。
由于r789c1和這四格同宮,所以r789c1顯然是不能填入4、6、7、9的任意一個(gè)數(shù)的。此時(shí)我們觀察c1,最終我們確定r3c1是填入6的唯一一處地方,所以r3c1 = 6。
這個(gè)例子就是顯性四數(shù)組(Naked Quadruple)了。
Part 4 那么問(wèn)題來(lái)了,有五數(shù)組嗎?
我們已經(jīng)講完了顯性數(shù)組和隱性數(shù)組,不過(guò)你有沒(méi)有發(fā)現(xiàn),這些數(shù)組我們都沒(méi)有講到“五數(shù)組”甚至更高規(guī)格的數(shù)組結(jié)構(gòu),這未免會(huì)讓我們引起懷疑。我可以先告訴你一個(gè)結(jié)論:規(guī)格大于4的數(shù)組,不論是顯性(Naked)的還是隱性(Hidden)的,理論上都不存在。至于其原因,我們將在下一篇章的數(shù)組里進(jìn)行詳細(xì)講解。
Part 5 怎么觀察?
我們講完了顯性數(shù)組,可以發(fā)現(xiàn),顯性數(shù)組的觀察難度比隱性大太多了,首先是我們剛?cè)腴T(mén)學(xué)習(xí)了唯一余數(shù)沒(méi)多久,覺(jué)得唯一余數(shù)不如排除好觀察;其次是這個(gè)技巧依賴(lài)于唯一余數(shù)的數(shù)數(shù)操作,所以這使得我們可能更加難以觀察到它們。不過(guò)實(shí)際上,我們有一個(gè)稍顯輕松的方法。

對(duì)于這個(gè)例子而言,橙色兩格是一個(gè)顯性數(shù)對(duì),而我們可以從例子里發(fā)現(xiàn),這兩格的所屬宮(一個(gè)b4,一個(gè)b6)的大部分確定值都是一樣的,這使得我們引起警覺(jué):由于大部分確定值都是一樣的,那么某兩格的候選數(shù)也就應(yīng)當(dāng)大概率出現(xiàn)一樣的情況。此時(shí)我們就找到r5c3和r5c8兩格,除了6、7、8相同以外,3和9的確定值也都恰好出現(xiàn)在r5上,這便使得r5c3和r5c8又有兩個(gè)情況被同時(shí)排除掉,這樣數(shù)下來(lái),r5c38此時(shí)就只能是1、2、4、5了。
這個(gè)時(shí)候,我們又可以借助排除來(lái)獲取信息:比如r5c3和r5c8的所在列都有1和4的確定值的提示信息,那么兩格就只剩下2和5了。這便就形成了顯性數(shù)對(duì)。
所以我們可以總結(jié)一下觀察方式:找出同一個(gè)區(qū)域的若干單元格,并大概掃描一下這若干單元格的所在宮(宮比較容易聚焦),來(lái)看它們的提示信息是否是真正的大部分都一樣(不一定確定值都是完全一樣的,只需要大部分相同就好);如果有這種情況出現(xiàn),我們就去看每一個(gè)單元格各自的所在行列看看是否真正有額外的影響,并最終來(lái)確定這若干個(gè)單元格究竟是不是顯性數(shù)組。如果是,那么恭喜你,看看結(jié)論到底在哪里;如果不是,也不要灰心,我們依然可以利用這個(gè)規(guī)則來(lái)看看其它地方。
Part 6 隱藏在顯性數(shù)組內(nèi)部的區(qū)塊
前面我們學(xué)了數(shù)組,也學(xué)了區(qū)塊,那么數(shù)組能不能和區(qū)塊一起用呢?我們來(lái)看看這個(gè)例子。

如圖所示,我們可以看到這個(gè)示例里,r578c3(358)是一個(gè)顯性三數(shù)組(前面說(shuō)明了形成數(shù)組的原因,這里希望你自己思考)。不過(guò)其中我們發(fā)現(xiàn),數(shù)字8只能出現(xiàn)在r78c3里,而r78c3又恰好同一個(gè)宮,于是b7其余單元格也就不允許填入8了,看起來(lái)這個(gè)r578c3除了三數(shù)組的結(jié)論,還帶了一個(gè)推理很像區(qū)塊的結(jié)論。得到這個(gè)結(jié)論后,我們就可以利用r9的行排除得到最終的r9c7 = 8了。
這里我們看到,這種數(shù)組里還外帶了一個(gè)區(qū)塊結(jié)論。目前,這種數(shù)組尚未擁有新的結(jié)構(gòu)名,我們一般把這種區(qū)塊稱(chēng)為數(shù)組內(nèi)區(qū)塊,即嵌入數(shù)組的區(qū)塊結(jié)構(gòu),而整體的技巧則稱(chēng)為區(qū)塊數(shù)組(Naked Subset With Locked Candidates,或簡(jiǎn)稱(chēng)Naked Subset+)。
Part 7 死鎖數(shù)組和割補(bǔ)數(shù)組(Locked Subset)
當(dāng)然,有一種數(shù)組結(jié)構(gòu)非常特殊,這種數(shù)組還有一種專(zhuān)門(mén)的觀察方式和角度。
7-1 基本用法

如圖所示,不妨我們觀察b2和c4。首先b2要填入1到9各一個(gè),而c4也是。它們除了共用r123c4三格以外,其它的單元格都不同。但是,既然它們都要填1到9,而且r123c4又是共用的,那這不就說(shuō)明了,r123c56和r456789c4的填數(shù)必須得是一一對(duì)應(yīng)的。也就是說(shuō),r123c56里填的是哪6個(gè)數(shù),r456789c4就得是哪6個(gè)數(shù)。
這一點(diǎn)很重要。我們?cè)俅斡^察r456789c4,發(fā)現(xiàn)里面只有兩個(gè)提示數(shù)2和3,它們恰好在r123c56里都沒(méi)有出現(xiàn)。r123c56里還剩兩個(gè)空,這不就明示這倆空格必須一個(gè)2一個(gè)3了嗎?換句話(huà)說(shuō),r456789c4里的空格就必須得填1、4、5、8了。
此時(shí),我們對(duì)b5作排除,就可以確定7的位置了。
可以看到,這個(gè)例子里,7的位置的確定除了依賴(lài)于排除,還依賴(lài)于剛才區(qū)域填數(shù)相同的結(jié)論。實(shí)際上,利用區(qū)域填數(shù)一致的邏輯在一些其它變體類(lèi)型的數(shù)獨(dú)題里稱(chēng)為Law of Leftover(簡(jiǎn)稱(chēng)LoL),中文如果直譯則直譯成剩余數(shù)法則,而我比較喜歡叫它割補(bǔ),因?yàn)樗倪壿嬍歉盍艘粋€(gè)區(qū)域補(bǔ)到另一個(gè)區(qū)域的方式。而實(shí)際上,這個(gè)例子里產(chǎn)生了兩個(gè)數(shù)對(duì),一個(gè)是列上的四數(shù)組,一個(gè)是宮內(nèi)的數(shù)對(duì)。但是……實(shí)際上這個(gè)所謂的割補(bǔ)數(shù)組指的并不是這兩個(gè)數(shù)組,而是下圖給的這個(gè)6、7數(shù)對(duì)。
下面我們還是用這個(gè)示例,看另外一種視角。

這個(gè)r13c4(67)的顯性數(shù)對(duì)使用另外一種視角則是這樣的:形成數(shù)對(duì)后,使得r5c3不能填入6或7,然后通過(guò)b5的宮排除,就可以確定7的位置了。
在技巧資料和一般的文章里,這種數(shù)組結(jié)構(gòu)有一個(gè)專(zhuān)門(mén)的名稱(chēng),叫做死鎖數(shù)組(Locked Subset)。而割補(bǔ)法并非標(biāo)準(zhǔn)數(shù)獨(dú)的技巧,而是一種叫做鋸齒數(shù)獨(dú)(Jigsaw Sudoku)的變體類(lèi)型數(shù)獨(dú)里的一種特殊技巧。
可以從例子里發(fā)現(xiàn),這種數(shù)組最大的規(guī)格只能是三格,因?yàn)樗鼰o(wú)法跨出區(qū)域形成數(shù)組結(jié)構(gòu),否則就無(wú)法產(chǎn)生割補(bǔ)的效果了。那么我們不妨再來(lái)看一則示例,這個(gè)示例就是規(guī)格為3的情況。

這個(gè)例子就自己推理了,思路和剛才的邏輯完全一樣。
7-2 高級(jí)用法
既然我們說(shuō)到,死鎖數(shù)組利用的是割補(bǔ)法的思維,那么下面來(lái)看一下,我們?nèi)绾伟迅钛a(bǔ)法用得更加高級(jí)一些。

如圖所示,我們可以利用r4和b6的割補(bǔ)法來(lái)得到結(jié)論,如果你能找到結(jié)論出現(xiàn)在r4c2上,那么恭喜你,你完全可以靈活使用這個(gè)技巧了;如果不能的話(huà),也不要灰心。我們來(lái)看看,這個(gè)結(jié)構(gòu)到底如何使用。
首先,我們通過(guò)最初的割補(bǔ)法,可以立馬得到r56c789里的填數(shù)一定和r4c123456的填數(shù)是一樣的。那么,我們發(fā)現(xiàn),r56c789里有4、6、7,在r4c123456里都是沒(méi)有出現(xiàn)的,所以我們就來(lái)看下,它們的填數(shù)情況。

那么,我們先著重觀察數(shù)字4的填法。4在r4c123456里只能放在r4c12上,因?yàn)閞4c456都被b5這個(gè)宮內(nèi)的r5c5的提示數(shù)4排除掉了,所以我們只能把4放在r4c12上。


另外兩則情況則完全同理。6和7的填數(shù)位置都僅能放在r4c14上。
所以,實(shí)際上4、6、7只能放在r4c124上,這是滿(mǎn)足隱性三數(shù)組的數(shù)組定義的,所以它們構(gòu)成了隱性三數(shù)組的結(jié)構(gòu),于是我們就可以通過(guò)唯一余數(shù),得到最終的填數(shù)結(jié)論在r4c2了。

由于構(gòu)成了隱性三數(shù)組,所以r4c124里只能放入4、6、7,而r4c2只能放入4,所以r4c2 = 4,便是這個(gè)技巧的結(jié)論了。
當(dāng)然,你也可以發(fā)現(xiàn),6、7在剛才的推導(dǎo)過(guò)程里,已經(jīng)構(gòu)成了隱性數(shù)對(duì),那么就不用這么麻煩地推導(dǎo)到這里,再通過(guò)唯一余數(shù)得到結(jié)論了。這只是其中的一個(gè)參考思路。

技巧信息
顯性數(shù)對(duì):難度3.0。
顯性三數(shù)組:難度3.6。
顯性四數(shù)組:難度5.0。
死鎖數(shù)對(duì):難度2.0。
死鎖三數(shù)組:難度2.5。
區(qū)塊三數(shù)組:難度3.7。
區(qū)塊四數(shù)組:難度5.1。
割補(bǔ)數(shù)組只是死鎖數(shù)組的另外一種觀察視角,所以難度不作分析。另外,死鎖數(shù)組沒(méi)有四數(shù)組,區(qū)塊數(shù)組沒(méi)有數(shù)對(duì)。你可以思考一下,為什么這兩種情況都不存在。
名詞解釋
顯性(Naked):結(jié)構(gòu)通過(guò)唯一余數(shù)的數(shù)數(shù)操作進(jìn)行數(shù)字的枚舉,最終這樣看出來(lái)的結(jié)構(gòu)就叫做顯性的結(jié)構(gòu)。有時(shí)候因?yàn)樗怯玫奈ㄒ挥鄶?shù)技巧,所以也稱(chēng)唯余的結(jié)構(gòu)。比如顯性數(shù)對(duì)又可以叫做數(shù)對(duì)唯余。但請(qǐng)你把這種叫法和“數(shù)對(duì) + 唯余”的推理模式分開(kāi),它們不是一個(gè)東西,只是恰好名字一樣罷了。
隱性(Hidden):結(jié)構(gòu)通過(guò)排除的操作對(duì)位置進(jìn)行枚舉,最終這樣看出來(lái)的結(jié)構(gòu)就叫做隱性的結(jié)構(gòu)。有時(shí)候因?yàn)樗玫氖桥懦记?,所以也稱(chēng)排除的結(jié)構(gòu),或者占位的結(jié)構(gòu)。比如隱性數(shù)對(duì)又可以叫做數(shù)對(duì)占位或者排除數(shù)對(duì)。但請(qǐng)你把這種叫法和“數(shù)對(duì) + 排除”的推理模式分開(kāi),它們不是一個(gè)東西,只是恰好名字一樣罷了。
數(shù)組內(nèi)區(qū)塊(Locked Candidates in Naked Subsets):通過(guò)一個(gè)顯性數(shù)組推理后,結(jié)構(gòu)內(nèi)會(huì)產(chǎn)生一個(gè)區(qū)塊。這個(gè)區(qū)塊結(jié)構(gòu)就叫做數(shù)組內(nèi)區(qū)塊。
區(qū)塊數(shù)組(Naked Subset+):帶有數(shù)組內(nèi)區(qū)塊的數(shù)組類(lèi)型。
剩余數(shù)法則/割補(bǔ)(Law of Leftover,簡(jiǎn)稱(chēng)LoL):一種變種數(shù)獨(dú)類(lèi)型的技巧。
割補(bǔ)數(shù)組:死鎖數(shù)組結(jié)構(gòu)的另外一種視角,即借用割補(bǔ)來(lái)推理,產(chǎn)生的數(shù)組形式。
死鎖數(shù)組(Locked Subset):一種特殊的顯性數(shù)組,這種數(shù)組里的所有數(shù)字都可以是數(shù)組內(nèi)區(qū)塊。
鋸齒數(shù)獨(dú)(Jigsaw Sudoku):一種變種數(shù)獨(dú)類(lèi)型題目。