第 5 講:隱性數(shù)組
現(xiàn)在我們來看一個新的數(shù)獨技巧:隱性數(shù)組(Hidden Subset)。隱性數(shù)組是我們常用的第一種數(shù)組結(jié)構(gòu),不過它和區(qū)塊不太一樣的地方是,它有規(guī)格一說(有時候也叫做數(shù)組的階,Size/Order)。所以我們這里得分成多個示例來講解。
Part 1?隱性數(shù)對(Hidden Pair)

如圖所示,如果仔細(xì)觀察r1c38兩格,并觀察r1里填入1和6的位置,你就能發(fā)現(xiàn):通過外部1和6確定值的排除,我們可以快速發(fā)現(xiàn),實際上r1里能放下1和6的地方,恰好都只剩下了橙色的r1c38兩格。試想一下,假設(shè)我們在r1c3一格填入1,那么r1c8就必須填入6,不然r1里6的位置就沒有地方放了;同理;如果r1c3填的是6,那r1c8就得是1才行,不然1就沒辦法放了。
這樣便使得r1c38的填數(shù)必須得是一個1、一個6。自然而然就發(fā)現(xiàn)了,其它不是1和6的數(shù)字,比如數(shù)字8顯然就不能填到r1c38里了。
接著我們重新對r1使用關(guān)于數(shù)字8的行排除,發(fā)現(xiàn)數(shù)字8最終只剩下了r1c9一格可以放,所以r1c9 = 8。
這個技巧的巧妙之處就是,利用了排除法確定了不止一個數(shù)字的最終填數(shù)位置,而是兩個。這種結(jié)構(gòu)從圖上來看,把r1c38的數(shù)字全部標(biāo)出來后也不能立馬確定下格內(nèi)1和6是確定了位置的,即必須通過排除。所以這種結(jié)構(gòu)我們稱為隱性數(shù)對(Hidden Pair),“隱性”體現(xiàn)在剛才說到的“必須通過排除才能看到,單元格內(nèi)的填數(shù)情況標(biāo)注出來無法立馬確定”,而“數(shù)對”則是這個結(jié)構(gòu)在涉及兩格的時候,它的名字。
這個技巧稱為隱性數(shù)對排除,因為用到了隱性數(shù)對和排除。
和區(qū)塊的表示方式類似,我們可以把這個題目里的數(shù)對直接記作r1c38(16),其中“16”表示1和6,而不是數(shù)字16,因為在數(shù)獨里,我們只會用到1到9的數(shù)字,不會超過兩位數(shù),所以數(shù)字之間無需任何的分隔符號,這一點簡寫方式和c38的3和8類似。
Part 2 隱性三數(shù)組(Hidden Triple)
那么我們現(xiàn)在來看看規(guī)格涉及三格的例子。

如圖所示,仔細(xì)觀察b9,你會發(fā)現(xiàn)數(shù)字1、2、3的位置只剩下{r8c78, r9c8}三格可填。
我們把多個單元格用大括號括起來,并把涉及的單元格寫在里面。比如上面的寫法就表示r8c7、r8c8和r9c8三個單元格。
要想在b9放下1、2、3三個數(shù),而且還各一個,那只可能這樣三個單元格里,一個1、一個2、一個3。其它的任意情況都會使得三個單元格的填數(shù)“不夠平衡”,導(dǎo)致有一個數(shù)要么多出來一次,要么有的數(shù)字根本不會出現(xiàn)。比如這三個單元格里出現(xiàn)了一個7,那么必然就會使得1、2、3的其中有一個數(shù)字無法放到b9里,使得填法直接違背了“1到9每個數(shù)字都得各一個”的規(guī)則。所以,我們不能允許這樣的事情發(fā)生,故只能是一個1、一個2、一個3。
這樣便使得{r8c78, r9c8}三格只能填入1、2、3這三種數(shù)字。然后轉(zhuǎn)去觀察r8,可以發(fā)現(xiàn),現(xiàn)在4只有一處可以放,即r8c5,其它的情況都被排除掉了。所以,r8c5 = 4。
當(dāng)然,這個結(jié)構(gòu)因為規(guī)格變?yōu)?的關(guān)系,我們稱{r8c78, r9c8}(123)為隱性三數(shù)組(Hidden Triple),當(dāng)規(guī)格超過兩格的時候,我們直接稱為“n數(shù)組”,其中n表示規(guī)格數(shù)。當(dāng)然了,一般建議n寫成數(shù)字的漢字寫法,即一般不習(xí)慣寫成“3數(shù)組”。
另外,{r8c78, r9c8}(123)表示這三個單元格里的1、2、3,這是一種“泛指”,并不是說里面有些格子沒有1,或者沒2,或者沒3就不能寫在一起。當(dāng)你的表述邏輯可以用這個泛指來表達(dá)時,就可以這么寫。
Part 3 隱性四數(shù)組(Hidden Quadruple)

如圖所示,和剛才的邏輯類似,我們可以通過排除法,發(fā)現(xiàn)b9里填入1、4、6、7的地方都只剩下了r89c79四個單元格。那么,為了保證b9里必須得出現(xiàn)1到9都各一個的話,四格必須是一個1、一個4、一個6和一個7。
這里啰嗦一點。你可能注意到了,它和之前的示例有所不同的地方是,r89c79四格并不是所有單元格都恰好包含全部的1、4、6、7的,比如r9c7只有1、4、6,沒有7,這一點是否會影響我們繼續(xù)往下推理的邏輯呢?不影響。因為它不重要。之所以說它不重要,是因為我們只需要確定下1、4、6、7在里面確實是各有一個就行了。在形成結(jié)構(gòu)后,把這四格不是1、4、6、7的其余情況全都給它排除掉就可以了,而具體它的內(nèi)部到底少了哪些數(shù)字,從剛才的推理里我們也應(yīng)當(dāng)看出,其實我們并不關(guān)心這一點;當(dāng)然了,如果數(shù)字少到直接都可以使用排除和唯一余數(shù)技巧了的話,那就另說了。
接著觀察r9,就可以發(fā)現(xiàn)數(shù)字8只剩下r9c4可以填了,所以r9c4 = 8。
這個例子用到了規(guī)格是四格的情況,所以稱為隱性四數(shù)組(Hidden Quadruple)。
隱性四數(shù)組經(jīng)常出現(xiàn)像示例里這樣,結(jié)構(gòu)里部分單元格缺少一部分?jǐn)?shù)字的情況,但因為它不影響我們的推理,所以我們表述的時候依然可以使用r89c79(1467)的方式,即使這個表達(dá)看起來好像是必須r8c7、r8c9、r9c7、r9c9四格必須都得包含全部的1、4、6、7一樣。
Part 4 怎么觀察?
在示例里,其實我們已經(jīng)提到了它的觀察,它的觀察就是利用排除(行、列、宮排除)來尋找隱性數(shù)組結(jié)構(gòu)。排除是相對于唯一余數(shù)看起來似乎簡單一些的技巧,所以我們可以利用這一點來觀察到更多的排除結(jié)論。

技巧信息
隱性數(shù)對:難度系數(shù)3.4。
隱性三數(shù)組:難度系數(shù):4.0。
隱性四數(shù)組:難度系數(shù):5.4。
你可能會問,為什么規(guī)格不一樣,差別這么大。實際上是這樣的:隱性四數(shù)組和隱性三數(shù)組出現(xiàn)頻率都比較少,結(jié)構(gòu)的規(guī)格使得這些技巧出現(xiàn)頻率不高(隱性四數(shù)組甚至幾萬道題才能出一個出來,完全隨機出題的情況下)。這個難度系數(shù)是綜合觀察難度、技巧理解難度和出現(xiàn)頻率三個因素綜合構(gòu)成的,所以難度差異較大。說實在的,我確實能隨便找到隱性數(shù)對,但是隱性三數(shù)組和隱性四數(shù)組真的很少看得到,題目能出現(xiàn)這種技巧的頻率不高導(dǎo)致我基本用不上它,更別說隱性四數(shù)組了。
名詞解釋
數(shù)組(Subset/Locked Set):表示數(shù)組這種結(jié)構(gòu),也可以表示用到了數(shù)組結(jié)構(gòu)的這個技巧。數(shù)組一共分兩種:顯性數(shù)組(Naked Subset)和隱性數(shù)組,這一部分主要講的是隱性數(shù)組,顯性數(shù)組在下一講會提到。
顯性數(shù)組(Naked Subset):下一講會說的另外一種數(shù)組推理模型。
規(guī)格、階(Size/Order):數(shù)組的規(guī)格。
隱性數(shù)對排除:指代的是隱性數(shù)對結(jié)構(gòu)使用后,可以利用排除得到出數(shù)(Assignment)結(jié)論的技巧名稱。你可以理解為“隱性數(shù)對 + 排除”。
出數(shù)(Assignment):可以通過推理得到某一個單元格填入哪個數(shù)字的結(jié)論的過程。