謎題規(guī)則介紹#5 放置類(lèi)——星戰(zhàn)(starbattle)
今天來(lái)介紹一下星戰(zhàn)這個(gè)題型。
規(guī)則:在一些單元格中畫(huà)星星,使得每行、每列和每個(gè)粗線區(qū)域內(nèi)都含有N個(gè)星星(N會(huì)在題目中說(shuō)明)。 星星互相不相鄰或?qū)窍噜?/strong>。
例題如下,例題中N=1。我會(huì)在題目右上角標(biāo)注該題使用多少個(gè)星星。本文僅對(duì)N=1和2的情況進(jìn)行講解,N更大的時(shí)候,技巧其實(shí)是相通的,只是情況會(huì)稍微復(fù)雜一些。


星戰(zhàn)的規(guī)則理解起來(lái)非常簡(jiǎn)單,和數(shù)獨(dú)其實(shí)有很多相通之處。接下來(lái)就是星戰(zhàn)的一些基本套路。
套路1:排除法
排除法和數(shù)獨(dú)的排除法是一樣的,就是當(dāng)某行/列/宮已經(jīng)有N個(gè)星星的時(shí)候,該行/列/宮的其他格子都不能是星星。同時(shí),當(dāng)某行/列/宮內(nèi)被排除剩N格可能是星星的時(shí)候,這N格就必須都是星星。
排除法的使用就不單獨(dú)列圖了,會(huì)在其他套路的講解中融合進(jìn)去。
套路2:割補(bǔ)法/區(qū)塊法
割補(bǔ)法的中心思想是“N個(gè)宮只能在N行/列內(nèi)”或“N行/列只能在N個(gè)宮內(nèi)”。這個(gè)套路跟鋸齒數(shù)獨(dú)里的割補(bǔ)法是一致的。最簡(jiǎn)單的“割補(bǔ)法”其實(shí)就是那種只占據(jù)單行單列的宮,或者某一個(gè)占據(jù)了一整行/列還多的宮。這種單行/列/宮的割補(bǔ)法和數(shù)獨(dú)的區(qū)塊法是一致的。
如下圖所示,最上方的宮由于占滿的第1行,因此它在其他行的格子都不能是星星,否則第1行的星星就不夠了。同理,最下方R6C3和R6C4形成的宮完全在第6行內(nèi),因此第6行的其他格子就不可以是星星,否則這個(gè)宮的星星就不夠了。

割補(bǔ)法也可以連環(huán)使用。上圖中右下角的那個(gè)區(qū)域內(nèi),只有R5C4,R5C5,R5C6可以放星星了,因此R5的其他格子就不能是星星了。那么,對(duì)左下的那個(gè)宮進(jìn)行排除,就可以得到R4C1只能是星星了。


然后再次利用排除法可以出R3C5是一個(gè)星星。

下面是一個(gè)多行列的割補(bǔ)法的例子,實(shí)際上就是將R5C3這一格移到了它下方的宮內(nèi)。此時(shí)可以看出來(lái),右下的兩個(gè)宮均在R5和R6內(nèi),因此這兩行的其他格子就不能是星星,一樣可以得出R4C1是星星。

割補(bǔ)法在很多題目中都有非常強(qiáng)大的用處,也有一些比較難的割補(bǔ)法,這里就不再贅述了,總之記住它的基本思想就可以了。
套路3:結(jié)構(gòu)法
由于星戰(zhàn)中由于有星星不能對(duì)角相鄰的規(guī)則,所以會(huì)產(chǎn)生一些有趣的結(jié)構(gòu)。星戰(zhàn)的結(jié)構(gòu)的核心思想在于:2*2區(qū)域中最多只有1個(gè)星星。結(jié)構(gòu)法類(lèi)似于無(wú)緣數(shù)獨(dú)中的帶無(wú)緣的區(qū)塊。如下圖,由于R6C3和R6C4必然有一個(gè)星星,因此R5C4就不可以是星星,右下宮進(jìn)行排除可以出R5C6的星星。


緊接著在第2行使用一個(gè)類(lèi)似的結(jié)構(gòu),就把這個(gè)題目做完了。

結(jié)構(gòu)法在1星的題目里用的不多,下面是一個(gè)例子,用的是剛才多行列互補(bǔ)的那個(gè)圖,大家注意區(qū)分這兩個(gè)題目,雖然最終答案是一樣的:

這里紅色的三個(gè)格子必有一個(gè)星星,那么綠色的格子就不可以是星星了。
1星的結(jié)構(gòu)例子還有以下的這些,這里的每個(gè)紅色區(qū)域都是一個(gè)結(jié)構(gòu),可以去掉綠色里面的星星:


上面這個(gè)題也是唯一解,也需要用到上面的各種套路,但是本題難度較前面的例題稍高,大家可以嘗試一下。
另外,這些結(jié)構(gòu)即便是紅色格子減少了也不影響綠色的刪減,但是可能會(huì)增加能夠刪減的格子。大家可以自行思考一下,下面的這個(gè)紅色結(jié)構(gòu)可以刪哪些格子?當(dāng)然,題目還是唯一解的,大家也可以嘗試著完成這道題。

而對(duì)于N=2的題,結(jié)構(gòu)則豐富得多。最經(jīng)典的結(jié)構(gòu)就是下圖的這個(gè)“刀把五”,由于每個(gè)2*2區(qū)域最多1個(gè)星星,因此刀把位置的單格只能是星星,然后又可以利用R9C2和R9C3有一個(gè)星星來(lái)推出R10C2和R10C3不是星星。

除此之外,圖中還有一些比較經(jīng)典的結(jié)構(gòu),如下所示,每個(gè)帶有紅色格子的宮是一個(gè)結(jié)構(gòu),可以推出帶叉的格子不能是星星。

星戰(zhàn)的結(jié)構(gòu)是非常豐富的,本文介紹的只是一小部分,大家有興趣的話可以自己去尋找一下。另外,結(jié)構(gòu)和結(jié)構(gòu)之間也可以帶來(lái)很多的聯(lián)動(dòng),結(jié)構(gòu)得到的區(qū)塊也可以進(jìn)行各種排除,因此可以得到以下的套路:
套路4:區(qū)塊排除法
如下圖,左上的“板六”形狀推出來(lái)R2C2和R3C2必有一個(gè)星星,而第2列已經(jīng)有R7C2的星星,因此第2列的其他格子都不能是星星,因此可以得到R9C3是一個(gè)星星。這種排除的方法類(lèi)似于數(shù)獨(dú)中的區(qū)塊排除法。


此時(shí)注意到,下圖中最左下那個(gè)紅色的形狀有點(diǎn)像大寫(xiě)字母G的宮只有三個(gè)格子可以放星星了,那么必然是R9C1和R10C1中有一個(gè),剩下的一個(gè)就只能在R5C3了。這個(gè)相對(duì)于區(qū)塊排除來(lái)說(shuō),我更傾向于直接將其歸入宮排除法中。


更復(fù)雜的區(qū)塊排除法會(huì)利用到組合區(qū)塊。還是這個(gè)題,注意左上的宮和左下的藍(lán)色區(qū)塊,這個(gè)藍(lán)色區(qū)塊有1個(gè)星星,那么左上的黃色區(qū)域內(nèi)也只有1個(gè)星星,從而得到左上宮的紅色區(qū)域有1個(gè)星星,于是得到紅色的區(qū)塊,綠色的格子就不可能是星星了,也就可以將那個(gè)十字形狀的宮全部出來(lái)了。


區(qū)塊不僅可以作用在單個(gè)宮或者行列,也可以和割補(bǔ)法結(jié)合作用在多行多列中。如圖,左下的藍(lán)色區(qū)塊結(jié)合黃色的星星再結(jié)合紅色的宮,總共已經(jīng)有4個(gè)星星,而這些顏色的格子都分布在R9和R10中,這兩行內(nèi)也只有4個(gè)星星,因此可以得到R9和R10的其他格子不能是星星,從而得到下方R8C5和R8C7的星星。


做到這里之后,上面的這個(gè)題目已經(jīng)不難了,大家可以嘗試著自己利用區(qū)塊等技巧來(lái)完成這個(gè)題目。
總而言之,簡(jiǎn)單星戰(zhàn)的套路就是結(jié)構(gòu)出區(qū)塊,區(qū)塊出結(jié)構(gòu),如此一直排除下去,就基本上可以做完整個(gè)題。如果是較為復(fù)雜的星戰(zhàn),可能會(huì)有更深?yuàn)W的套路,在這里就不細(xì)說(shuō)了。
那么,以下是兩個(gè)練習(xí)題,第1題來(lái)自Fake CPOC3,第2題是一個(gè)漢字造型題,注意第2題是11階的。


附上期答案:


不要糾結(jié)為什么涂黑格的顏色不一樣,上面的比賽答案圖忘記修了。
那么這次的介紹就到這里,我們下次再見(jiàn)!