Meowdoku 什麼時候該試探,以及怎麼把它壓在兩步內
這個網站自己的攻略說絕不要用猜的。commonMistakes.ts 也警告過,遊戲會抓出偽裝成推論的猜測。那到底有沒有正確的猜法?有——只要你搞清楚遊戲驗證器實際保證了什麼、猜錯要付出什麼代價,以及一次真正的卡關到底有多窄。
沒有任何棋盤真的需要用猜的
Meowdoku 自己的攻略講得很直白:「絕不要用猜的——遇到矛盾就退回去。」棋盤背後的產生器,用結構本身撐住了這句話,而不只是給個建議。一個棋盤在上線之前,會被反覆檢查、重建,直到它剛好只有一個完整解——不會是零個,也不會是兩個。一個有兩種合法解法的棋盤,不管你推理得多仔細,總會有格子曖昧不明,所以產生器根本不會讓這種棋盤出現。
這個保證,也正是 commonMistakes.ts 第二個錯誤存在的原因:一步棋就算沒違反任何明文規則,還是可能被拒絕,因為驗證邏輯檢查的是「棋盤剩下的部分還能不能被完成」,不只是「這步棋本身合不合法」。這兩個檢查加在一起,就是為什麼一個卡住的棋盤,從邏輯上來說從來就不是真的無解——它只是需要比一次只看一列、一欄或一個區域更深一層的推理,也就是遊戲攻略自己講的「鎖定戰術」:當一個區域被限制在單一一條線裡,其他區域就都不能再用那條線了。
驗證器其實在默默回答一個更大的問題
當一步符合規則的棋被拒絕時,遊戲只會顯示一行字:「這裡放不下貓 — 剩下的部分會無解」。這句訊息不是在做明文規則檢查,而是完整搜尋一次,看從這個位置出發,棋盤還有沒有任何合法的方式能被解完——而且每放一步都會重新搜尋一次。
把這個機制跟「只有一個解」的保證放在一起,就會得出一個遊戲從來沒有明講的結論:一步被驗證器「接受」的棋,不只是合法而已,它就是正確答案。如果不是——如果真正的解答把貓放在那一列、那一欄或那個區域的別的格子——那把棋盤繼續完成下去,就會出現第二個合法解,而產生器早在這個謎題上線之前,就已經排除了這種可能性。你不可能不小心放了一隻「合法但錯誤」的貓,卻讓遊戲照樣接受它。
猜錯了,還是照樣扣一顆心
這個保證並不是免死金牌。一次被拒絕的放置——不管是違反了明文規則,還是單純讓棋盤變得無解——都會扣一顆心,把連擊歸零,跟任何其他失誤一樣。貓咪根本不會真的先被畫到棋盤上;遊戲會在畫出任何東西之前就先檢查,所以完全沒有東西需要事後收拾。
這跟這個網站已經寫過的另一個錯誤有個真正的差別:在正確答案格上標 ✕。那個錯誤當下不扣任何東西,卻會靜靜地待在那裡,污染你之後的每一個推論,直到提示抓到它為止。猜錯的失敗模式恰好相反——事情發生的當下就付出代價,而且完全不會擴散。你損失一顆心,換來一個答案。你不會因此弄丟整個棋盤的推理脈絡。
什麼時候,這顆心真的值得花
唯一候選消去法——這個網站已經詳細測量過的技巧——本身並不能穩定解完一個棋盤。就算算上起始貓,它也只能完整解出大約 93% 的簡單棋盤,普通難度只有 39%,困難難度 28%,極難難度只剩 6%。過了簡單難度,「還沒解完,被逼出的格子就先用光了」才是常態,不是少見的意外。
這正是這篇文章要談的那個時刻——不是「我還沒找到下一步」,而是「整個棋盤上,沒有任何一列、一欄或一個區域只剩一個合法格子」。遊戲自己給的卡關建議,是挑一條快滿的線,把候選縮到兩三個再逐一檢查——而這個建議,其實描述的是這款遊戲棋盤上幾乎每一次真正的卡關,而不只是一個湊巧方便的特例。
一次真正的卡關,到底有多窄
為了驗證這件事,這篇文章對新產生的棋盤,把唯一候選消去法一路跑到跑不動為止——用的是跟唯一候選消去法那篇文章相同的模擬方式——並且針對每一個「還沒解完就卡住」的棋盤,記錄下當時還沒解開的列、欄或區域裡,最窄的那一個還剩幾格合法:
| 棋盤 | 剩兩個候選 | 剩三個 | 四個以上 |
|---|---|---|---|
| 簡單 5×5 | 100% | 0% | 0% |
| 普通 7×7 | 93% | 7% | 0% |
| 困難 9×9 | 92% | 8% | 0% |
| 極難 10×10 | 81% | 18% | 1% |
在簡單難度,一次真正的卡關,每一次都剛好是二選一。就算是極難難度——這款遊戲會產生的最難棋盤——也有 81% 的機率只剩兩個候選,99% 的機率剩兩個或三個。在這款遊戲裡,卡關幾乎從來不是「在一堆看起來都合理的格子裡挑一個」,幾乎總是「在剛好兩個裡面選一個」。
兩步:先放,再重新掃一次
正是這種窄,才讓有紀律的試探值得花這顆心。從你最窄的那條未解線裡,挑兩三個候選中的一個放下去。這是第一步,驗證器會直接給出結論:接受就代表正確,沒有模糊空間;拒絕就代表你剛損失一顆心——但同時也得到了答案,因為在一條真正只有兩個候選的線上,一次拒絕就排除了唯一另一種可能。剩下那一格不是第二次猜測,而是一個被逼出的格子,跟免費的唯一候選掃描原本就會自己找到的一樣。
第二步,是放完之後立刻打開自動打叉重新掃一次。棋盤上幾乎任何地方放下一隻貓,都很容易連帶逼出後面不只一格,這也是為什麼放置之後只掃一次棋盤,會漏掉大半這種連鎖反應。先重新檢查區域,再看行和欄,順序跟開局階段建議的一樣。只有在這次重新掃描真的什麼都掃不出來時,才考慮再試探第三次——在還沒確認第一次猜測結果之前,就疊上第二個沒驗證過的猜測,等於白白放棄了遊戲原本願意免費給你的推論,換成拿一顆心去冒險。
一句話版本
- 從來不是必要的。 每個棋盤都只有一個解,所以純邏輯——包含鎖定戰術——理論上永遠夠用。
- 被接受就代表正確。 驗證器檢查的是整個棋盤還能不能解完,不只是明文規則,所以被接受的棋不可能只是運氣好的合法猜測。
- 扣一顆心,沒有殘局要收拾。 被拒絕的放置根本不會先出現在棋盤上——代價是有限且立即的,不像悄悄錯標的 ✕。
- 真的卡關才猜。 整個棋盤沒有任何格子被逼出,而且你最窄的未解線只剩兩三個候選——這幾乎就是每一次真正卡關的樣子。
- 兩步,不是連環猜。 放下候選,立刻用自動打叉重新掃描,再考慮下一步。在只有兩候選的線上,一次拒絕就已經給你答案了。
在一個真正卡關的棋盤上試試看
玩到每一列、每一欄、每一個區域真的都不再逼出任何格子為止。找出你最窄的那一條,放下一個候選,看驗證器不管接受或拒絕會告訴你什麼——然後在做任何其他事之前,先重新掃一次。
棋盤都是在你的瀏覽器裡生成的,你玩的內容不會被傳送到任何地方。