複雜雷區中的精確判斷
在簡單的雷區中小試牛刀後,帶著發現的規律,讓我們進行一次實戰演習。下圖是高級掃雷遊戲中的一個典型的雷區:
你能在不翻開格子的情況下,直接指出黃格子中有無地雷嗎? 如果將雷區隨意改變一點——左上角的一個格子下移一位,結果又如何呢?
你可能需要考量全局,從某個點開始逐步推理,將雷區全部掃描一遍,才能判斷。而當雷區任意改變一點時,你都要重新來過,才能再次解答。這無疑是一種巨大成本負擔。
實際上我們可以很快速地給出答案:第一個雷區的黃格子中無雷。而第二個雷區的黃格子中一定有雷。
這是怎麼做到的?其實將上述的邏輯門引入到這個複雜的雷區中,一切都會變得簡單而清晰起來。
雷區內靠近邊界、可以直接確定是地雷的位置都插上了標示旗,剩下的位置標上了不同的字母。把一個有地雷格子看作1,沒有地雷的看作0。最左麵的格子(u、v)作為輸入,最右麵的格子(t)作為輸出。按照掃雷遊戲的規則,經過一步步推算,它們之間的關係就是:
( u , v , t ) = ( 1 , 1 , 1 ) 或 ( 1 , 0 , 0 ) 或 ( 0 , 1 , 0 ) 或 ( 0 , 0 , 0 )
顯然,這個雷區被歸納成了一個AND門,它不僅輕鬆化解了這個掃雷難題,而且把雷區的規律揭示出來了。如此一來,當你掌握掃雷中這些邏輯門規律並加以練習後,就能夠達到精確、快速的“機械化”掃雷水準。而到那時,一個新紀錄或許就會誕生了。