不用猜的踩地雷

本站的每一盤都能只靠邏輯解完。下面說說什麼叫「被迫猜」、普通踩地雷為什麼會有那麼多,以及這裡的每一盤是怎麼生成、怎麼證明的。

普通踩地雷為什麼會逼你猜

經典踩地雷的雷是隨機擺放的。隨機擺放經常會造出任何技術都解不開的局面:兩個未翻開的格子,中間只有一顆地雷,而每一個碰到其中一格的數字,也以完全相同的方式碰到另一格。不管你翻哪一個,都有 50% 的可能輸掉。玩家們管這叫「50/50」,也就是二選一。

這種情況有多常見?我們生成了大量第一下安全的普通隨機盤,交給我們的求解程式去推。隨機初級盤大約有 91% 碰巧不用猜,中級大約 65%,高級只有大約 14%。也就是說,在高級上,一盤隨機盤多半至少要猜一次——而且常常是在你認真推了好幾分鐘之後、快到結尾的時候。

對喜歡推理的人來說,這是普通踩地雷最讓人沮喪的地方:輸贏的最後一步交給了運氣,前面的所有努力都可能白費。無猜踩地雷要解決的就是這一點。

  • 未翻開
  • ✓可以放心翻開
  • ⚑一定是雷
  • ⚑已插旗的雷
  • 1看這裡
  • ?只能靠猜

一個真實的 50/50

兩個標著 ? 的格子裡一共只有一顆地雷。那個 1 和那個 3 都同時碰到這兩格,而且沒有別的數字碰到其中任何一格。沒有任何數字能把它們區分開,想繼續只能猜。這樣的盤面在本站永遠不會出現。

每一盤是怎麼生成的

你點下去之前,盤面上什麼都還沒擺。你點的第一格和它周圍的 8 格會被留空,其餘的雷隨機撒在剩下的格子裡。然後求解程式從你點的那一格開始,像一個細心的玩家那樣把這一盤推下去——它從來不看雷實際在哪裡。

如果求解程式走到一個既證明不了任何格子安全、也證明不了任何格子是雷的局面,就說明這一盤會需要猜。這時生成程式不會把整盤扔掉重來,而是在那些還沒確定的格子之間挪動一顆地雷——絕不動求解程式已經推出來的格子——然後讓求解程式接著推。已經翻開的格子和已經證明的雷都留在原處,所以到目前為止推出來的一切依然成立。這樣反覆,直到求解程式能翻開所有安全格。

最後,整盤做好之後,還會從你的第一下開始、從頭再完整解一遍,確認它真的不需要猜。只有通過了,才會給你看。這一切只要幾毫秒——在筆電上,一盤高級平均約 3 ms——所以你一點下去,盤面就出現了。

求解程式能知道什麼

求解程式只用你看得見的東西:已翻開格子上的數字、它已經證明是雷的格子,以及雷的總數。它分三步推理。第一步,看單個數字:一個數字的雷已經全部找到,它其餘的鄰格就安全;一個數字周圍未翻開的格子數正好等於還缺的雷數,這些格子就全是雷。第二步,看兩兩比較:把兩個有重疊的數字放在一起比,1-2-1、1-2-2-1 這類定式就是這樣解開的。第三步,完整窮舉:對邊界上每一段相連的區域,試遍所有可能的雷位擺法,再結合剩餘雷數,只有在所有擺法裡都成立的結論才會被採用。

最後這一步是完整的——如果連它都確定不了任何一個格子,那這個局面就真的需要猜。為了確保求解程式永遠不會得出錯誤的結論,它有自動化測試把關:在 400 個隨機小局面上,把它的結論和暴力窮舉所有雷位的結果逐格對比,每一次都完全一致。

技術還是那些,只是不再拋硬幣

無猜並不意味著簡單。盤面保留了經典的尺寸和雷數,求解程式也允許使用很深的推理,所以你可能需要同時比較好幾個數字,或者數一數剩下的雷,才能找到下一步。改變的是「輸」的含義:輸了,一定是讀錯了某個數字或者手滑點錯,絕不是運氣不好。

還有一點很實用:如果某個局面看起來像 50/50,那它就一定不是——盤面的某個地方還有一步推理在等著你。這會讓你在卡住時更有耐心去找,而不是隨手點一下碰運氣。

常見問題

什麼是無猜踩地雷?

每一盤都保證只靠邏輯就能解完的踩地雷。你永遠不會走到必須在幾個格子之間隨便挑一個的局面。

無猜會讓踩地雷變簡單嗎?

盤面的尺寸和雷數都和經典踩地雷一樣,所以對推理的要求一樣高。它去掉的是運氣,不是難度。

怎麼知道一盤不需要猜?

求解程式從你的第一下開始,只用玩家看得見的資訊來推這一盤。只有它能翻開所有安全格,這一盤才會給你;做好的盤面還會再從頭解一遍來確認。

無猜模式下第一下安全嗎?

安全。盤面在你第一次點選之後才生成,那一格和它周圍的 8 格一定沒有雷。

所有難度都是無猜的嗎?

是的——初級、中級、高級和每日一盤都用同樣的方式生成。