第 7 講:復合結(jié)構(gòu)技巧
前面已經(jīng)講到了一些復合結(jié)構(gòu),例如一個排除需要同時動用多個區(qū)塊、多個數(shù)組或者區(qū)塊數(shù)組混合使用的,那么這種東西被我們稱為復合結(jié)構(gòu)(Complex Pattern)。顯然,復合的方式千變?nèi)f化,也就應該擁有千變?nèi)f化的組合,形成千變?nèi)f化的變體。那么現(xiàn)在我們就找出一些非常常見的復合方式,或者是比賽的例題來作講解。
注意,本文(包括后面和前面的講解用到的題目)里用到的大型比賽的題目是不能隨意使用的,這里的題目都經(jīng)過了授權(quán)(當然不需要授權(quán)的題目就不管它們,需要授權(quán)的則必須經(jīng)過同意和協(xié)定來合理合法使用)。
為什么才說這個呢?因為這一節(jié)用到的比其他的多一些。
Part 1 遞進關系
1-1 示例 1:宮區(qū)塊 + 行列區(qū)塊 + 排除
有一些時候,區(qū)塊之間是可以套用,或者說有遞推關系的。比如下面這個例子。

如圖所示,我們先可以觀察到b9里存在一個3的宮區(qū)塊,于是通過排除,我們可以得到r8c5 <> 3。
接著,我們繼續(xù)觀察c5,發(fā)現(xiàn)c5此時只能把3放在r12c5里,所以此時它們形成列區(qū)塊結(jié)構(gòu),而因為它們同宮,所以b2里其余單元格都不能放下3。所以此時r3c4 <> 3。
最后,正是因為這一點,我們觀察r3,并最終確定了3的真正填數(shù)位置。通過排除,我們最終確定r3c9是唯一的能放3的單元格,所以r3c9 = 3。
這個例子巧妙的地方在于,它連著使用了兩個區(qū)塊,一個是宮區(qū)塊,而另外一個則是行列區(qū)塊。
1-2 示例 2:數(shù)組 + 區(qū)塊 + 排除

如圖所示,這個例子是一個典型的數(shù)組+區(qū)塊+排除的特別厲害的示例。首先,我們可以通過2、3、9對b1的排除,得到{r1c23, r2c3}(239)形成隱性三數(shù)組結(jié)構(gòu)。
在得到數(shù)組結(jié)論后,r1c23和r2c3就不允許填入不是2、3、9的其它數(shù)字了。接著我們就可以在b1里發(fā)現(xiàn)數(shù)字1的區(qū)塊結(jié)構(gòu),位于r12c1(r3c1不能填1,因為r3c8是1)。
那么,得到區(qū)塊后,我們再對r6使用排除法,確定了1的填數(shù)位置最終只能是r6c5,所以r6c5 = 1。
這個例子先使用了數(shù)組,然后得到了區(qū)塊結(jié)構(gòu);然后區(qū)塊后又得到了行排除才出現(xiàn)了結(jié)論。
Part 2 同步關系
2-1?示例 3:區(qū)塊 + 唯一余數(shù)
現(xiàn)在我們來看一道題目。為了講解這個技巧,我專門出了此題。

我們針對r5c5作唯一余數(shù)的數(shù)數(shù)操作。其中數(shù)字1和2沒有確定值,而3到9在r5c5的相關格里都有對應的確定值,所以r5c5只能是1、2、9的其一。
然后,我們在b2里可以發(fā)現(xiàn),1的填數(shù)位置只能是r23c5,所以r23c5(1)形成區(qū)塊,致使r5c5 <> 1;而對應的對稱的b8,也有一個2的區(qū)塊。所以最終1和2都不能填入到r5c5,所以r5c5 = 9。
這個題巧妙的地方在于,第一步就必須使用這個技巧,否則要想繞過這個技巧,必須使用死鎖數(shù)組或三數(shù)組結(jié)構(gòu)。所以這一點來說,我還是很自豪的。
2-2 示例 4:數(shù)組 + 區(qū)塊 + 唯一余數(shù)
我們再來看一個比賽的題目。

這個題目在出了一部分數(shù)字后,依然無法繼續(xù)往下填數(shù)。此時得需要一個唯一余數(shù)技巧來瓦解題目。
正如圖上標注的一樣,r12c5是一個9區(qū)塊,r5c12(23)是一個隱性數(shù)對,r5c89(15)是一個隱性數(shù)對,r89c5(46)是一個隱性數(shù)對,再配合r5c4的確定值8,我們最終確定了r5c5 = 7。
至此,直觀類技巧我們就講完了。直觀的部分,剩下的就得靠你自己了。

技巧信息
復合結(jié)構(gòu)技巧:不好說。難度隨著使用的技巧和組合方式不同而變化。暫時沒有一個通用的數(shù)學公式來計算得到。
名詞解釋
復合結(jié)構(gòu)(Complex Pattern):以多種不同的結(jié)構(gòu)呈同步使用關系或遞進使用關系的,叫做復合結(jié)構(gòu)。