雷區中的邏輯門
怎麼判斷一個雷區是否有bug?又怎麼判斷雷區中地雷的具體位置呢?難道一定要從頭到尾將雷區掃描一遍嗎?
其實這些雷區裏其實藏著一個規律。我們用數學方法來分析了上例的雷區:
在之前提到的這兩個雷區裏,把還沒有翻開的格子交叉標記上字母x和x’。可以看到:當x的格子有雷時,x’格子一定沒有地雷,反之亦然。如果將最左邊的空格子作為輸入,把最右邊的格子作為輸出,輸入結果和輸出結果一定是一樣或者相反的。如果是相反的,這相當於一個NOT(“非”)門電子元件。如果是一樣的,就有趣了,這樣的一片雷區就具備了電路導線的性質!
在這裏,雷區被看成了一個數字邏輯電路。執行這些“或”、“與”、“非”等邏輯運算的電路則被稱為——邏輯門。任何複雜的邏輯電路都可由這些邏輯門組成。
邏輯門是集成電路上的基本組件。簡單的邏輯門可由晶體管組成。這些晶體管的組合可以使代表兩種型號的高低電平在通過它們後產生信號。而高低電平可以分別代表邏輯上的真假或二進製中的0和1,從而實現邏輯運算。具體到掃雷遊戲裏,也就是說,邏輯門可以用於判斷一係列格子中的地雷的具體位置,而且它如同電路傳導一樣,精確而迅速。
常見的(也是掃雷中用到的)邏輯門包括“與”門、“或”門、“非”門等。將它們組合使用就可以實現更複雜的運算——完成複雜情形下的掃雷,這種方法比按照規則緩慢推進的掃雷方法要節省很多時間。