最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

第 23 講:全雙值格致死解法

2020-09-18 18:15 作者:SunnieShine  | 我要投稿

這一個部分要講解一個針對于全盤內(nèi)所有沒有填數(shù)的單元格的結(jié)構(gòu),而這一節(jié)的原理稍微比較抽象一些,而且內(nèi)容也比較多。希望你同之前一樣,拿出草稿紙寫寫畫畫。

Part 1 標(biāo)準(zhǔn)類型(BUG Type 1)

如圖所示,我們觀察全盤,發(fā)現(xiàn)一個神奇的現(xiàn)象:全盤除了r8c9這一格外,其余所有的單元格都有兩個候選數(shù),唯獨(dú)r8c9,有三個候選數(shù)。而且,這個結(jié)構(gòu)特殊之處在于,結(jié)構(gòu)所有區(qū)域(每一個行、列、宮),均包含規(guī)格參差不齊的數(shù)組結(jié)構(gòu),而這樣的結(jié)構(gòu)正是由于這個原因,沒有任何的矛盾推論。這就很奇怪了,并促使我們想思考一個問題:居然這么神奇的結(jié)構(gòu),都沒有刪數(shù)的結(jié)論,我堅(jiān)信它是有邏輯得到刪數(shù)結(jié)論的,而這個邏輯到底是怎么樣的呢?

如果我們?nèi)サ魊8c9的候選數(shù)1,先當(dāng)r8c9(1)不存在。于是,你會發(fā)現(xiàn)一個神奇的現(xiàn)象:所有沒有填數(shù)的單元格里,恰有兩個候選數(shù)。

既然所有的空單元格內(nèi)都是兩個候選數(shù),而每一個空格涉及到的所有區(qū)域下,所有空單元格都恰好能夠構(gòu)成數(shù)組結(jié)構(gòu)。比如b3,所有空單元格{r2c8, r3c9}直接可以構(gòu)成36數(shù)對;又如c8,所有空單元格r2468直接可以構(gòu)成1367四數(shù)組,所有區(qū)域都是這樣。

好像是個廢話?好像r8c9(1)去不去掉也是這樣的吧?看我接下來怎么推導(dǎo)哈。

既然每個單元格都是兩個候選數(shù),而且都能找到和它一起構(gòu)成數(shù)組的其它單元格,那我們隨便選取一格,來假設(shè)填數(shù)。隨便選取一格,比如說r2c1,有1和6兩個候選數(shù)。我們假設(shè)就會分為r2c1 = 1和r2c1 = 6兩種填數(shù)情況。

又是假設(shè)?這么麻煩?我們不需要假設(shè)填完全部情況,而是簡單思考一下就可以了。試想一下,全盤既然都是兩個候選數(shù),那又可以構(gòu)成數(shù)組結(jié)構(gòu),那么只要有一格填完數(shù)字,而每一個單元格都可以找到和它一起構(gòu)成數(shù)組的其余單元格,于是就可以把這個數(shù)組填完。比如說r2c1,與之構(gòu)成數(shù)組結(jié)構(gòu)的有r2c128的1、3、6三數(shù)組、r23c12的1、3、6、9四數(shù)組以及r237c1的1、6、9三數(shù)組。既然r2c1填入其中一個數(shù)了,那這些數(shù)組理所當(dāng)然地可以根據(jù)這個數(shù)推理而得到剩下的部分。由于全盤都是兩個候選數(shù)的單元格,那r2c1填入其中一個數(shù)值,就必然會形成一種填法。同理,r2c1填入另外一個數(shù)值,那就必然會形成另外一種填法。隨即形成兩個填數(shù)完全不一致的盤面結(jié)果。

我們再詳細(xì)闡述一下。就比如一個三數(shù)組,又因?yàn)檫@個結(jié)構(gòu)全部單元格都是兩個候選的緣故,三數(shù)組的話,三個單元格的候選數(shù)情況就只可能是這樣的:

ab、ac、bc

那么如果{ab}這一格填a和填b,會產(chǎn)生兩種不同的情況:

  • 情況1:a、c、b

  • 情況2:b、a、c

每一個單元格在其行、列、宮上都能夠找到對應(yīng)的數(shù)組結(jié)構(gòu),所以每一個行列宮都可以發(fā)現(xiàn)這樣的形式,直到完成盤面。

每一個兩個候選數(shù)的單元格,意味著每一個單元格都有兩種不同的填法,而假設(shè)其中一格,都能使得這樣的單元格直接出數(shù)。所以全盤的空單元格都可以根據(jù)一個單元格,其余單元格會受到此處填入的情況影響,導(dǎo)致其它位置上的填數(shù)也會產(chǎn)生變化,即“牽一發(fā)而動全身”。

因?yàn)橛袃煞N填法,所以這樣的填法一定會產(chǎn)生兩個填法完全不一樣的盤面結(jié)果。由于全盤都有數(shù)組結(jié)構(gòu)的緣故,數(shù)組的互換情況就導(dǎo)致了兩種完全不同的填數(shù)方式。如果其中一個盤面是正確的話,那么另外一個盤面就也應(yīng)該是正確的。

試想一下,數(shù)獨(dú)只有一個答案,怎么可能出現(xiàn)兩個盤面都是正確的的情況?所以兩個情況都應(yīng)該是錯的才對。因?yàn)閯偛盼覀冋f到過,只要其中一種填法是對的,那另外一種填法因?yàn)閿?shù)組的互換,也應(yīng)該是正確的。兩個都是對的,這明顯不滿足數(shù)獨(dú)唯一解的要求呀。所以,這樣的結(jié)構(gòu),即全盤都只有兩個候選數(shù)、每一格都能夠構(gòu)成數(shù)組的特殊結(jié)構(gòu),就不應(yīng)當(dāng)單獨(dú)存在于盤面之中。所以,最初的假設(shè)(假設(shè)r8c9(1)消失于盤面之中)就不正確了。反過來,結(jié)論就應(yīng)為r8c9 = 1。

這個結(jié)構(gòu)稱為全雙值格致死解法Bivalue Universal Grave,簡稱BUG)。

BUG,全名Bivalue Universal Grave,直譯的中文叫“雙值-全-墳?zāi)埂?,所以第一個版本的翻譯是“全雙值墳?zāi)埂?,后面發(fā)現(xiàn)翻譯不大對,并且體現(xiàn)不出本質(zhì)意思后,就被翻譯為了“雙候選數(shù)致死解法”,后面發(fā)現(xiàn),這個說法還有歧義,隨后又被翻譯為“全雙值格致死解法”,里面的雙值格Bivalue Cell)指代的是里面有只有2個候選數(shù)的單元格。

這里介紹一個東西。有多少個候選數(shù)就稱為“多少值格”,有三個候選數(shù)的單元格就稱為三值格Trivalue Cell),而一般多于兩個候選數(shù)的單元格都稱為多值格Multivalue Cell)。

還有一個問題。這個結(jié)構(gòu)為什么叫“致死解法”呢?為什么不叫“致命”而是“致死”?這是因?yàn)?,在r8c9(1)去掉之后,結(jié)構(gòu)本身不是出現(xiàn)UR、UL、AR以及拓展矩形那樣、內(nèi)部有兩種不同的填法,卻對剩余盤面不造成其它刪數(shù)影響的形式,而結(jié)構(gòu)本身內(nèi)部就已經(jīng)是無解的了。剛才我們就說到過,如果其中一種填法是正確的,那另外一種填法肯定也是正確的,這就出現(xiàn)兩種不同的填法都正確的現(xiàn)象,這違背了唯一解的要求。所以結(jié)構(gòu)的兩種填法,它們的內(nèi)部都是不可能存在正確的填法的,換句話說,怎么填都會出現(xiàn)違背數(shù)獨(dú)規(guī)則的矛盾。這一種現(xiàn)象,我們稱為“致死”,就不再叫“致命”了。

那么,結(jié)構(gòu)到底是怎么看到這個結(jié)論的呢?難道我還要把r8c9的所有候選數(shù)一個一個地試一遍才知道?當(dāng)然不是,接下來我就告訴大家怎么看到它。

Part 2 原理進(jìn)一步剖析

2-1 原理說明

之前說到兩點(diǎn):

  • 只有一個三值格,其余都是雙值格;

  • 每一個單元格都能找到某個或某些同區(qū)域(行、列、宮)的單元格與之構(gòu)成數(shù)組結(jié)構(gòu)。

是滿足結(jié)構(gòu)的必要兩點(diǎn)。那么,針對這兩點(diǎn),我們可以得到一個便于觀察的推論:每一個候選數(shù)在其所在的行、列、宮下,均有兩個相同的數(shù)。文字可能敘述不嚴(yán)謹(jǐn),來看一下我舉例你就知道了。

當(dāng)r8c9 <> 1時,每一個數(shù)在其所在的行、列、宮上恰好都有兩個同樣的數(shù)。比如r3c9(3),r3c9(3)所在的行(r3)、列(c9)和宮(b3)內(nèi),都恰好有兩個3;又如r7c1(9),r7c1(9)所在的行(r7),列(c1)和宮(b7)內(nèi),都恰好有兩個9。

那么,這里提出一個方便后面敘述的術(shù)語詞:真數(shù)True Candidate)或非BUG候選數(shù)Non-BUG Candidate)。它們指的是和BUG結(jié)構(gòu)無關(guān)的候選數(shù),或者說是那個正確的數(shù)字,比如盤面之中r8c9(1)就是真數(shù)。當(dāng)然,后面的題目有可能是多個真數(shù)的,不過這多個真數(shù)之間的關(guān)系并非像這里r8c9(1)一樣直接正確。

所以,我們在找的時候,就把不是出現(xiàn)兩次的數(shù)字都給它找出來,就可以了。但是,前提是,這個結(jié)構(gòu)在去掉這樣的數(shù)字之后,是能出現(xiàn)BUG致死形式的。

2-2 兩個不能用BUG的例子

考慮這個示例。這個盤面可不可以形成一個BUG致死形式呢?不可以。為什么呢?因?yàn)橛^察r7,你會發(fā)現(xiàn)其中有三個有29、39、49這樣排布候選數(shù)的單元格,這便讓數(shù)字9直接在r7上出現(xiàn)了3次。而它們都是雙值格,很明顯不可能在這三格上下手尋找真數(shù)。所以我們無法讓此處r7c6的其中任意一個候選數(shù)去掉之后,形成BUG致死形式。因此這個盤面也不可以直接構(gòu)成BUG。再來看一個示例。

那么這個示例又能不能形成致死形式呢?也不行。因?yàn)閞7c5(3)看似在r7上確實(shí)出現(xiàn)了三次,但c5只有兩個3,所以就這一點(diǎn)而言,如果進(jìn)行假設(shè)時,把r7c5(3)去掉的話,c5的3就直接出數(shù)了,破壞了BUG原有的模樣,所以這也不屬于BUG的盤面。

Part 3 區(qū)塊類型(BUG Type 2/BUG + n)

3-1 同數(shù)BUG + 3

如圖所示,全盤僅剩下三個三值格,我們把疑似真數(shù)的候選數(shù)找出來,它們分別是r1c5(7)、r3c4(7)和r6c5(7)。此時,把它們仨同時去掉,此時盤面的結(jié)構(gòu)就一定會形成BUG致死形式(上面羅列的那兩點(diǎn)要求)。

導(dǎo)致BUG致死形式就意味著,結(jié)構(gòu)不應(yīng)直接存在于盤面之中;反過來,r16c5(7)和r3c4(7)也就都應(yīng)該為真數(shù)。那三個真數(shù)就意味著都是正確的嗎?顯然不是。多個真數(shù)的BUG結(jié)構(gòu),真數(shù)應(yīng)該是“都不可同時消失”,而不應(yīng)該是“真數(shù)全部都正確”。換句話說,r16c5(7)和r3c4(7)里,至少有一個是正確的填數(shù)。那么不管誰是正確的,它們都看得到的地方(共同對應(yīng)的地方),就不應(yīng)該是正確的。即r3c5 <> 7。否則,r3c5 = 7會同時讓所有的三個真數(shù)全部消失,違背推導(dǎo)的結(jié)論。

之所以說“不可同時消失”而不是“全部正確”的原因很簡單:真數(shù)全部消失就使得盤面直接形成BUG的致死形式,所以假設(shè)錯誤,所以原假設(shè)“同時消失”的相反情況才是結(jié)果,即“不可同時消失”。

這個結(jié)構(gòu)和之前介紹的UR里的“類型5”一樣,它屬于類型2是因?yàn)榭梢钥闯伞皬V義的區(qū)塊”,所以這個示例屬于區(qū)塊類型。

雖然這里看似在c5里,7出現(xiàn)了四次,已經(jīng)不滿足要求了,不過之前說的出現(xiàn)三次,是針對于每一個真數(shù)講的,如果這一列恰好有兩個相同的數(shù)字作為真數(shù)的時候,這個數(shù)確實(shí)會在此列出現(xiàn)4次。不過,要想找到這些真數(shù),依然得從多值格里去尋找,因?yàn)殡p值格里是根本不可能產(chǎn)生真數(shù)的。

而且,看到技巧名后面的“BUG + n”了嗎?由于BUG的特殊性,所以這個技巧有一個特殊的名字,叫做BUG + n。這個n值表示的是真數(shù)的總個數(shù),比如上述例子里,有三個真數(shù),就稱為BUG + 3。當(dāng)然,我們也可以把標(biāo)準(zhǔn)類型的BUG稱為BUG + 1。

實(shí)際上,UR也有類似的邏輯(UR + n),但在UR里我們很少這么用,因?yàn)樗慕Y(jié)構(gòu)基本上已經(jīng)固定了是分屬于兩個宮里的四個構(gòu)成矩形的單元格,而并不是像BUG結(jié)構(gòu)一樣,真數(shù)的位置可能發(fā)生任意的變化。

最后啰嗦強(qiáng)調(diào)一下,“真數(shù)至少有一個正確”是包含“所有真數(shù)同時正確”的情況的,所以分析的時候,不要漏掉情況,否則會導(dǎo)致思維不嚴(yán)謹(jǐn),從而導(dǎo)致結(jié)構(gòu)結(jié)論的判定錯誤。

接下來我們再來看一些示例。

3-2 異數(shù)BUG + 2

如圖所示,我們找到了全盤的所有真數(shù),一個是r4c9(9),而另外一個是r5c9(4)??梢灾赖氖牵鏀?shù)不可全部同時消失,所以r4c9(9)和r5c9(4)至少都得有一個數(shù)是成立的。那么我們就需要找到一個刪數(shù),使得它們都能夠排除掉,這樣的數(shù)即為結(jié)果。

可以發(fā)現(xiàn),r4c9(4)就是這樣的數(shù)。如果r4c9 = 4,顯然r4c9 <> 9,而且它也能使得c9里其余位置不能填入4,所以r5c9 <> 4,這樣就使兩個真數(shù)都消失了。雖然它破壞了BUG結(jié)構(gòu),但實(shí)際上我們得到的結(jié)論“兩個真數(shù)至少有一個成立”這一點(diǎn)并不依賴于BUG,所以結(jié)論依舊可以使用,而且它的這般推理已經(jīng)使得真數(shù)全消失了,使得出現(xiàn)矛盾。所以,r4c9 <> 4。反過來理解也可以:可以發(fā)現(xiàn),所有真數(shù)都能排除r4c9(4):r4c9(9)填入后一定會使得r4c9 <> 4(同一個單元格顯然不能放下兩個數(shù));而r5c9(4)填入后也一定會使得r4c9 <> 4(同一列不能填兩個4)。所以呢,由于所有真數(shù)全部都能排除掉r4c9(4),故r4c9 <> 4。

這種結(jié)構(gòu)巧妙的地方依然是利用了前一個示例里的邏輯,找到三個真數(shù)都能排除的候選數(shù),因此它依然被放到了區(qū)塊類型里,因?yàn)閰^(qū)塊類型的核心思想就是“找交集”。這個例子有兩個真數(shù),所以稱為BUG + 2。

3-3 異數(shù)BUG + 2的另一則實(shí)例

如圖所示,這一個示例和剛才的例子的邏輯幾乎完全一樣,不過它單獨(dú)被我列出來是因?yàn)?,這個例子的真數(shù)不好被發(fā)現(xiàn)。因?yàn)?和5在c9都是三次,而這一點(diǎn)并不能斷言真數(shù)4和5到底在r78c9的哪一個單元格之中。

我們此時就得按行來分析。我們要找的是每一個區(qū)域都出現(xiàn)3次的數(shù),所以既然列和宮都區(qū)分不了,那么只能看行。r7里數(shù)字5出現(xiàn)了三次,所以r7c9(5)才是真數(shù),所以相對地,r8c9(4)是真數(shù)。

找到這一點(diǎn)后,我們就可以使用剛才的邏輯來得到結(jié)果:r7c9 <> 4、r8c9 <> 5。這一點(diǎn)就自行分析了,我在此處就不需要過多闡述,因?yàn)檫@里的刪數(shù)邏輯和上一例的是完全一樣的。這個技巧依然用了兩個真數(shù),所以也是BUG + 2。

3-4 真數(shù)在同一個單元格

如圖所示,這個例子的邏輯和之前的完全一樣,不過它長相特殊,所以我們再次敘述一下這個題目的邏輯。

首先,這個題目的真數(shù)有兩個,但全部產(chǎn)生于同一個單元格r5c4,真數(shù)是r5c4(68)。顯然,真數(shù)一旦出現(xiàn),就意味著它們不可同時消失。也就是說這個單元格里要么r5c4 = 6,要么r5c4 = 8。所以r5c4的填數(shù)就跟除了6和8以外的數(shù)字沒有關(guān)系了,因此可以安全地刪除掉它們。

3-5 異數(shù)BUG + 3

如圖所示,這一示例里,所有真數(shù)位于r4c8(1)、r7c8(6)和r7c9(1)。它們不可同時消失,即至少有一個數(shù)是正確的填數(shù)。那么,首先r4c8(1)和r7c9(1)都能立刻刪除掉r7c8(1);而r7c8(6)成立時也能夠立馬刪除掉r7c8(1)(同一個單元格不能放兩個數(shù)),所以r7c8(1)顯然就是這三個真數(shù)都能排除的候選數(shù)了,因此r7c8 <> 1。

這個例子是三個真數(shù)了,所以是BUG + 3??梢钥吹?,這則示例就比較靈活一些了,真數(shù)甚至可以涉及不同的數(shù)字,也可能存在刪數(shù)的結(jié)果。

3-6 異數(shù)BUG + 3的另外一個實(shí)例

如圖所示。這則示例里,有三個真數(shù),但只分屬于兩個單元格。真數(shù)分別是r4c4(25)和r5c4(8)。它們不可同時被去掉。

那么,顯然r4c4(8)是三個真數(shù)都能排除的候選數(shù),因此,r4c4 <> 8。

3-7 異數(shù)BUG + 4

如圖所示,這個例子是BUG + 4,即有四個真數(shù),而推導(dǎo)的邏輯在之前已經(jīng)反復(fù)提到過了,所以該示例請你自行進(jìn)行推理。這則示例里的所有真數(shù)分別是r3c3(4)、r8c12(4)和r8c3(8)。

3-8 異數(shù)BUG + 7

Emmm……我想你看了肯定會吐。

這個圖是我之后才找到的,覺得比較有意思就加進(jìn)來了。

Part 4 數(shù)組類型(BUG Type 3)

因?yàn)锽UG里的真數(shù)的位置的特殊性,它的位置是任意的,所以它的數(shù)組類型可能比普通UR類型的數(shù)組類型更難理解透徹。

4-1 BUG + 顯性數(shù)對 1

如圖所示,發(fā)現(xiàn)該例子里所有的真數(shù)一共只有兩個:r4c8(9)和r9c8(8)。它們不可同時被去掉;而如果真數(shù)全部都成立(顯然是可能的,因?yàn)椤安豢赏瑫r消失”包含了“全部都成立”的可能)的話,r1c8將無法填入任何一個合適的數(shù)字,所以矛盾。所以,實(shí)際上,真數(shù)必須得只有一個是成立的,不能多,也不能少。

不論是8還是9,都可以和r1c8形成一個待定的數(shù)對結(jié)構(gòu),我們能確定r189c8里必然會有一個8和一個9,所以其余位置都不能再填入8和9了,因此可以刪除掉它們。

我們再來看一則示例。

4-2 BUG + 顯性數(shù)對 2

如圖所示,這一則示例里一共有三個真數(shù):r6c36(4)和r6c4(2)。

有三個真數(shù)就意味著我們需要討論四種情況:有0個真數(shù)成立、有1個真數(shù)成立、有2個成立和有3個成立。

顯然,有0個成立是不可能的,因?yàn)樗鼈內(nèi)咳サ袅?,使得出現(xiàn)致死形式;全部成立也是不可能的,因?yàn)檎鏀?shù)里包含相同的數(shù)字,還同一行,這樣一定會產(chǎn)生矛盾;所以還剩下兩種情況,有1個或有2個真數(shù)成立。

如果有兩個真數(shù)成立的話,那么只可能是r6c3或r6c6其一的候選數(shù)4和r6c4(2)一同成立了,這是不可能的,因?yàn)閞6有一個單元格只有候選數(shù)2和4——r6c5,如果這兩個真數(shù)同時成立將立馬使得r6c5無法填入數(shù)字。所以這樣也是矛盾的。

所以最終的結(jié)果就只有一種情況:三者只有一個才是正確的數(shù)字。不論是誰成立,都可以和r6c5(24)形成待定的顯性數(shù)對結(jié)構(gòu),使得r6里一定的2和4一定只會出現(xiàn)在r6c3456里,所以其余位置都不能夠放2和4,刪除掉它們。

這兩則示例都是通過BUG帶上待定的顯性數(shù)對來使用的,即都綁定了數(shù)組,所以它們屬于數(shù)組類型,即類型3。

接下來我們來看一則帶顯性三數(shù)組的示例。

4-3 BUG + 顯性三數(shù)組

如圖所示,示例一共存在兩處真數(shù),一個是r6c3(4),另外一個是r6c7(6)。依然按照有0個、1個、2個真數(shù)是正確的填數(shù)這樣三種情況討論,發(fā)現(xiàn)有0個真數(shù)一定違背要求(形成BUG致死形式)、有2個也會違背要求(使得r6c19無法填數(shù),或者可以理解為r6c1379四個單元格只剩下1、4、6三種不同的候選數(shù),填不滿四個單元格)。所以,只有一種情況成立:只有一個真數(shù)是對的。

那么,不論4還是6對,r6c1379里必然有一個1、一個4和一個6(構(gòu)成顯性三數(shù)組形式),所以刪除掉r6其余單元格的1、4、6。

4-4 BUG + 顯性四數(shù)組

如圖所示,這個例子有些復(fù)雜的是,它所帶的數(shù)組的規(guī)格有點(diǎn)大。首先,我們依然按照真數(shù)有0、1、2個成立的情況來分析。有0個必然出現(xiàn)致死形式,而有2個成立有立馬會讓c9出現(xiàn)五個單元格只能放下2、4、7、9四種數(shù),顯然是不夠放的,有一個單元格必然會空出來,所以也是違背要求的。

所以,只能有一個真數(shù)是對的,那么,r14579c9里會產(chǎn)生一個2、4、7、9的顯性四數(shù)組結(jié)構(gòu),進(jìn)而得到刪數(shù)(c9里其余單元格的2、4、7、9)。

4-5 BUG + 顯性五數(shù)組

恐怖的是,BUG的結(jié)構(gòu)過于特殊,使得顯性五數(shù)組Naked Quintuple)出現(xiàn)在了結(jié)構(gòu)里。這是我們第一次使用到顯性五數(shù)組來做題。

如圖所示,結(jié)構(gòu)里包含r5c4(1)、r5c5(6)和r6c5(9)三個真數(shù)。按照有0個、1個、2個、3個真數(shù)來討論填數(shù)情況:

  • 有0個真數(shù)是對的是違背要求的,因?yàn)檫@樣一定會使得題目形成BUG的致死形式;

  • 有3個真數(shù)是對的是違背要求的,因?yàn)槿慷紝Φ脑挘?、2、4、6、9五個不同的數(shù)字將放在7個單元格里,這樣會剩下兩個單元格放不下數(shù)字;

  • 有2個真數(shù)是對的是違背要求的,因?yàn)椴徽撃膬蓚€數(shù)對,1、2、4、6、9都無法放下6個單元格,總會有一個單元格會空出來。

所以,最終我們就只有一種情況:即三個真數(shù)里只有一個是對的。

不論是誰對,這樣就恰好會在r4c46、r5c45和r6c5的其一、以及r56c6里產(chǎn)生一個顯性五數(shù)組結(jié)構(gòu),所以其余單元格都不能再填入數(shù)字1、2、4、6、9,刪掉它們。

那么,顯性數(shù)組的版本我們就講完了。接下來我們再來看幾則帶隱性數(shù)組的版本。

4-6 BUG + 隱性三數(shù)組

如圖所示,隱性數(shù)組的討論可能更為復(fù)雜和坎坷一些。我們依然參照剛才的方式,分情況討論真數(shù)的成立性。

如果有0個真數(shù)成立,根據(jù)數(shù)獨(dú)規(guī)則,顯然不允許出現(xiàn),因?yàn)橹苯有纬闪薆UG結(jié)構(gòu)的致死形式了;而如果真數(shù)全部成立的話,注意到r8c3是只有候選數(shù)2和7的,如果真數(shù)都成立,那么這個單元格就無法填入合理的數(shù)字了,所以依然是矛盾的。所以,真數(shù)有且僅有一個成立。不論是誰成立,剩下的部分都將形成一個2、3、9的隱性三數(shù)組結(jié)構(gòu)。因?yàn)椴淮_定2和7哪個真數(shù)成立,故刪數(shù)只可能在r3c3上。

但請你注意的地方是,這里的2、3、9隱性三數(shù)組的形成并不是隨意形成的,因?yàn)樽⒁獾浇Y(jié)構(gòu)外部是含有2的(比如r8c3(2)就直接阻止了涂色單元格形成隱性數(shù)組的情況)。那為什么說結(jié)構(gòu)還是可以成立呢?這是因?yàn)?,r8c3是關(guān)于2和7的雙值格,而不論假設(shè)真數(shù)的其中哪一個成立(假設(shè)我們用字母a表示),那么這個雙值格的另外一個數(shù)就必然會顯現(xiàn)出來(我們叫做b),而這個數(shù)字b恰好就是另外一個真數(shù)的數(shù)值。所以,實(shí)際上假設(shè)真數(shù)a成立,那么必然在r6c3里的真數(shù)b就自動消失了,因此,三數(shù)組這一次是“迂回”證明的。

這個結(jié)構(gòu)帶了一個隱性三數(shù)組。

4-7 BUG + 隱性四數(shù)組

自己看吧,我就不解釋了。

4-8 BUG + 隱性五數(shù)組

這個也自己看了。

4-9 為什么BUG沒有帶隱性數(shù)對,卻帶有五數(shù)組?

為了描述的邏輯結(jié)構(gòu)更為清晰,我們先來說說看,為什么有五數(shù)組。

五數(shù)組之所以存在于BUG里,是因?yàn)樗幕パa(bǔ)并非是嚴(yán)格的,和之前的數(shù)組不同,BUG的真數(shù)是可以放在任意位置的,這便使得套用數(shù)組邏輯的時候,完全可能讓真數(shù)放同一個單元格,導(dǎo)致數(shù)組形成的時候需要少判定一個單元格。我來舉例說明這個說法。

如左圖所示,這是我們剛才介紹的隱性五數(shù)組的示例,實(shí)際上,你可以看互補(bǔ)視角,轉(zhuǎn)變?yōu)?、2、4、6、9的顯性五數(shù)組結(jié)構(gòu)。而實(shí)際上,這里不論是顯性數(shù)組還是隱性數(shù)組,都共用了真數(shù)涉及的單元格;而真數(shù)大多擠在同一個單元格里。

下面我們再來說說,為什么沒有隱性數(shù)對。

隱性數(shù)對在之前UR和AR甚至是UL之類的技巧里,都出現(xiàn)過,但是為什么BUG不行了呢?是沒有示例還是根本就不可能存在隱性數(shù)對呢?

答案是,根本不可能存在。下面我們來簡單證明一下。

首先,我們來思考有兩個單元格放真數(shù)的情況。如果一個盤面有若干真數(shù)分布到兩個單元格里的話,如果是隱性數(shù)對,就必須意味著外部還存在一個單元格與之構(gòu)成隱性數(shù)對。例如下圖。

如果全盤一共有兩個真數(shù),且都在c4,一個是r3c4(3),另外一個是r4c4(1)。

那么為了保證隱性數(shù)對的出現(xiàn),我們必須在c4的其余單元格里加入一個單元格(此時隱性數(shù)對應(yīng)當(dāng)是1和2,因?yàn)檎鏀?shù)所在的單元格里的額外候選數(shù)只有1和2)。此時我們假定這個單元格在r5c4,且只有1和2,那么OK,結(jié)構(gòu)成立了。但實(shí)際上你可以發(fā)現(xiàn),r45c4是一個顯性數(shù)對,它的存在破解了BUG的出現(xiàn),所以兩個單元格有真數(shù)的情況肯定是不可能出現(xiàn)了。

那么更多呢?比如三個單元格呢?思路完全是一樣的,所以我們就不討論了。因此,實(shí)際上可能的只有一種情況:所有真數(shù)都只在一個單元格里出現(xiàn)。

考慮如下情況。如果只有一個單元格能放下真數(shù),那么構(gòu)成隱性數(shù)對的幾率就會更大一些,不過……

如圖所示,假定全盤只有兩個真數(shù)是r4c4(23),這樣的話,要想構(gòu)成隱性數(shù)對,那么額外的數(shù)字1就必須和c4里的另外一個單元格形成隱性數(shù)對。這樣就OK了。不過,真數(shù)需要有一個是成立的,這一個單元格必須被占據(jù),所以實(shí)際上額外的候選數(shù)是必須被我們刪除的,所以這顯然也不可能構(gòu)成隱性數(shù)對;而從另外一個方面來看,即使r4c4(1)可以存在,那么構(gòu)成的兩個單元格r4c4和r5c4實(shí)際上已經(jīng)自動地形成了隱性數(shù)對,而這一點(diǎn)其實(shí)跟BUG毫無關(guān)系。所以,一個單元格放真數(shù)也不可能存在隱性數(shù)對。

所以,實(shí)際上,BUG的數(shù)組類型是不可能帶隱性數(shù)對來推理的。

Part 5 共軛對類型(BUG Type 4)

找到全盤的所有疑似真數(shù),然后去掉看是否構(gòu)成BUG致死形式。結(jié)果這個例題比較神奇的是,不同的真數(shù)可以在同一個單元格內(nèi)。這個例子有四個真數(shù):r1c7(26)和r2c7(34)。

如果它們?nèi)咳サ?,的確會形成BUG致死形式,所以它們都應(yīng)該是貨真價(jià)實(shí)的真數(shù)。那么,至少都有一個真數(shù)是正確的。但是,c7有9的共軛對,意味著r12c7有且僅有一格是填9的。因?yàn)?不是真數(shù)的緣故,所以其中一格是9,那另外一格就必然只能填真數(shù)了。所以這樣一來,就跟這兩格不是真數(shù)或9的其余候選數(shù)沒有任何關(guān)系了,因此可以安全地刪除掉它們。

一般來說,共軛對類型的BUG結(jié)構(gòu)一般都會產(chǎn)生與之匹配的數(shù)組類型(也就是說類型4的結(jié)構(gòu)一般都會有類型3的身影),比如這個示例,看起來好像沒有,實(shí)際上你可以對照之前的類型3去找找,它實(shí)際上帶有一個規(guī)格稍大一些的數(shù)組結(jié)構(gòu)。

而正是因?yàn)槿绱?,所以共軛對類型的示例少之又少,這里僅僅找到了一個看起來比較不像是數(shù)組類型的示例作為介紹。

Part 6 待定 BUG(Almost BUG)

下面介紹一種新奇的使用模式,叫做待定BUGAlmost BUG,簡稱ABUG)結(jié)構(gòu)。

6-1 可能形成BUG致死形式的ABUG

如圖所示,這是一個待定的BUG盤面。

之所以說它是“待定的”,是因?yàn)檫@里盤面確實(shí)不是合格的BUG盤面。數(shù)字4在r5里確實(shí)出現(xiàn)了三次,也包含了三值格一格r5c1,但c1卻沒有出現(xiàn)三次4,宮內(nèi)也沒有;同樣地,數(shù)字2反而在c1出現(xiàn)了三次,也包含三值格;但數(shù)字2在r5和b4里也沒有出現(xiàn)三次,也都只有兩次。這已經(jīng)不滿足BUG的要求了。但是現(xiàn)在為了用它,我們發(fā)現(xiàn)一個神奇的單元格r5c8:如果r5c8 = 2,它就會破除掉4在r5出現(xiàn)三次的影響,而c8上的其余2也都會被刪除,即使此時看起來好像c8里的2出現(xiàn)了三次。

在一通推導(dǎo)后的刪數(shù)結(jié)論后,盤面上剛才所有涂色的候選數(shù)就變成了這樣。

細(xì)數(shù)所有單元格和候選數(shù),全部出現(xiàn)兩次,并且所有單元格也均為雙值格,至此,形成BUG形式。故原假設(shè)錯誤,即最終結(jié)論為r5c8 <> 2。

6-2 可能形成BUG + 1的ABUG

如左圖所示,這個盤面是否是一個合格的BUG盤呢?不是。因?yàn)閏4里只有三個2,而真數(shù)在此列里會產(chǎn)生兩個(r2c4(2))。這樣一來的話,r5c4無論如何都選不出真數(shù)。選2的話,c4就兩個2了,扣掉兩個真數(shù)后,此列就只剩下唯一的一個2,盤面“瓦解”……

所以它不是合格的BUG盤應(yīng)該有的樣子。這種差一點(diǎn)的BUG又怎么用呢?如果我們嘗試這樣做:如右圖所示,我們率先假設(shè)r8c4 = 2,那么r8c5 = 8是顯然的,于是對上方2和8的影響和刪數(shù)也就順帶得到了。此時刪除掉影響的數(shù)字后,盤面變成一個標(biāo)準(zhǔn)的BUG標(biāo)準(zhǔn)類型的局勢:全盤空格都是雙值格,只剩下一個三值格;其次,三值格位于r2c5,出現(xiàn)三次的數(shù)字是2,r2、c5和b2里2都是恰好三個。那么,根據(jù)BUG的使用規(guī)則,這個2應(yīng)當(dāng)是r2c5的真數(shù)。

還沒完呢。我們是通過假設(shè)r8c4 = 2得到的BUG盤面,并得到r2c5 = 2的結(jié)論的。那么,這個推理鏈有何用處呢?r2c5 = 2是我們的結(jié)論,這就印證了一點(diǎn):如果題目唯一解,那么題目就可以依靠r2c5 = 2這一個結(jié)論繼續(xù)往下做,直到全盤結(jié)束,得到答案。而這個題目是我給大家的示例,我能保證題目是唯一解的。所以我們可以這么去認(rèn)為了:一旦盤面能做到r2c5 = 2,那剩下的空格的填數(shù)就能立馬順次得到,并出現(xiàn)唯一的結(jié)果,而過程無需證明為什么,也不需要你手動根據(jù)r2c5 = 2后還一個一個把數(shù)字填入到單元格里。說清楚明白一些,就是我們一旦得到r2c5 = 2的結(jié)論,因?yàn)轭}目是唯一解的,所以后續(xù)的步驟我們都可以不用做就直到題目已經(jīng)可以完成了。因此,既然題目能通過假設(shè)的r8c4 = 2得到r2c5 = 2的結(jié)論,那么原來的假設(shè)r8c4 = 2也就必須是成立的。題目應(yīng)當(dāng)是唯一解的,這就意味著能推理得到r2c5 = 2這一結(jié)論的原假設(shè)就應(yīng)該是成立的(畢竟推理是從假設(shè)到r2c5 = 2來的)。所以,r8c4 = 2是這個技巧的結(jié)論。

那么到這里,致命結(jié)構(gòu)的基礎(chǔ)部分就介紹完畢了。接下來我們將進(jìn)入新的一種數(shù)獨(dú)技巧里面來。

Part 7 BUG最少需要多少個單元格?

一個合格的BUG結(jié)構(gòu)一共最少只會涉及多少個單元格呢?這個答案是11,而這個答案則是通過枚舉或構(gòu)造結(jié)構(gòu)而得到的。一定要注意,BUG的內(nèi)部是無解的。

如圖所示,這是兩個只有11個單元格的BUG + 1結(jié)構(gòu)。

不過,BUG最多涉及多少個單元格,目前尚未得到確切的答案,不過我們依然在不斷努力尋找最大情況。


總算是把BUG講完了。你還滿意嗎?

技巧信息

  • BUG標(biāo)準(zhǔn)類型:難度5.6。

  • BUG區(qū)塊類型:難度5.7。

  • BUG數(shù)組類型:難度5.7+數(shù)組規(guī)格*0.1+(是顯性?0:0.1)。

  • BUG共軛對類型:難度5.7。

ABUG技巧尚未收錄到里面。因?yàn)樗赡軙?jīng)過一些比較復(fù)雜的推理才能到達(dá)這里?,F(xiàn)在沒有一個比較合適的算法可以絕對地得到這個數(shù)值。

名詞解釋

  • 雙值格Bivalue Cell):一個單元格只有兩個候選數(shù)。

  • 三值格Trivalue Cell):一個單元格有三個候選數(shù)。

  • 多值格Multivalue Cell):一個單元格有至少三個候選數(shù)。

  • 真數(shù)非BUG候選數(shù)True Candidate/Non-BUG Candidate):通過BUG技巧的推導(dǎo)得到的、它們?nèi)サ羰沟妙}目必然產(chǎn)生BUG致死形式的那些候選數(shù)。

  • BUG + n:n表示真數(shù)的個數(shù)。當(dāng)一個BUG結(jié)構(gòu)的所有n個真數(shù)全部去掉后,題目必然導(dǎo)致BUG的可交換、且數(shù)字出現(xiàn)兩次、全盤雙值格的致死形式。


第 23 講:全雙值格致死解法的評論 (共 條)

分享到微博請遵守國家法律
娄底市| 长子县| 克什克腾旗| 焦作市| 伊宁县| 勐海县| 施甸县| 沐川县| 郧西县| 永新县| 枣强县| 达日县| 万山特区| 邵阳市| 上高县| 崇左市| 黄梅县| 醴陵市| 如皋市| 遂昌县| 海宁市| 江都市| 密山市| 洮南市| 靖远县| 鲁山县| 固阳县| 六枝特区| 秦安县| 门源| 阳信县| 抚顺县| 三台县| 四子王旗| 永胜县| 牡丹江市| 北川| 丽水市| 奈曼旗| 平顶山市| 天柱县|