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


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

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


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

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

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


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

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

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


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

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

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

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


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


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


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


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


附上期答案:


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