蔡寶桂

家中電燈的開與關探索規則發現明燈拼圖法骨牌法行列推估法鏡射、旋轉

二階行或列三階行或列四階行或列

 

這是不是一個很有趣的遊戲,以為燈就快被點亮了,沒想到亮的又變不亮了,感覺好像永遠都點不完似的….,你是否想出辦法既可以點亮所有的燈,又可以在最少的步數下完成呢?讓我們一起來探討!

家中的電燈開與關

居家的電燈開關大約可以分成兩種:一種是單一按鈕控制,非開即關,結果是一定的;另一種則是雙按鈕控制,不同於單一按鈕僅從按鈕的上、下壓判別開與關的結果,而是要根據目前的電燈狀況,如果已經打開來了,那麼此時的按鈕動作會讓電燈關掉,如果電燈處於關閉狀態,那麼按下按鈕後會讓電燈打開。對了!就是後面這一種的經驗,它有助於我們判斷點燈遊戲的亮與不亮之情形。

當電燈都不亮的情況下,以雙按鈕的開關當燈時,按一下燈就亮、再按一下燈就熄掉,按第三下燈就打開….,所以我們可以發現,如果按奇數下電燈會保持亮的狀態,按偶數下時電燈就會熄掉。這是很重要的經驗,可千萬別忘囉!

top

*探索規則發現明燈

在點燈的遊戲規則中,當點按任一個房間時,該房間以及其上下左右的電燈就會被切換(亮的變暗、暗的變亮),而遊戲者的任務就是要將所有房間的電燈都點亮。另一方面,由於點亮一個燈會影響上下左右及自己五個燈,換句話說,每一個燈受自己及上下左右五個燈的影響,如果這五個燈裡,有奇數個被點了,這個燈就會亮,如果是偶數就不會亮,以下用3*3 的點燈盤面做說明。因為點燈過程中只有亮或不亮,點與不點,所以就以1代表點、0代表不點:

 

A

B

C

 

1

1

1

1

 

2

1

1

1

 

3

1

1

1

 

 

圖一

 

在圖一的方法是將所有的燈泡都點一次,但是因為點燈時會同時影響五個燈,所以在A1的點燈受到點A1B1A2的影響,點了3次,所以最後A1的燈是亮著的,同理在A1C1A2A3C3也是都被點了3次,結果都是亮的,而B2因為受到了B2B1B3A2C2的影響,被點了5次,結果也是亮的,但是A2B1B3C2則被點了4次,最後的結果是不亮的。所以圖一的方法無法順利將所有的點燈點著。

從圖一的分析中,你是否發現簡單的檢查方法了呢?只要我們將每個房間自己本身與上下左右之房間的數字加總,計算出這個房間的數字﹝即被點的次數﹞,如果是奇數則結果此房間是亮的、如果是偶數則判定房間是不亮:﹝如圖二、三、四﹞

 

 

 A

B

C

 

 

 A

B

C

 

 

 A

B

C

1

1

1

1

 

1

1

1

1

 

1

1

0

1

2

0

0

0

 

2

1

0

1

 

2

0

1

0

3

1

1

1

 

3

1

1

1

 

3

1

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

圖二:每個房間點燈的情形

 

 

 A

B

C

 

 

 A

B

C

 

 

 A

B

C

1

2

3

2

 

1

3

3

3

 

1

1

3

1

2

2

2

2

 

2

3

4

3

 

2

3

1

3

3

2

3

2

 

3

3

3

3

 

3

1

3

1

 

 

 

 

 

 

 

 

 

 

 

 

 

圖三:每個房間被點燈的次數

 

 

 A

B

C

 

 

 A

B

C

 

 

 A

B

C

1

 

1

 

1

2

 

2

 

2

3

 

3

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

圖四:每個房間亮﹝○﹞與不亮﹝●﹞的情形

 

從上面的思考過程中,可以發現掌握遊戲操作秘笈之關鍵,就在於能夠掌握點燈位置,順利產生讓每個房間產生奇數次,即可能通關,至於房間點燈的順序並不影響奇數次的結果。那麼又該如何正確的點對位置呢?

top

*拼圖法

由於點燈時同時影響的是上下左右的四間房間,所以也可以以圖形的方式思考。此時的基本圖形有三類:一為邊緣的凸型、L型和中間的十字型﹝如圖五﹞,三種基本型都可以做90度、180度和270度的旋轉。圖形之間可以重複也可以不重疊,如果不重疊必創造出最少的點燈次數。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

凸型

 

十字型

 

L

圖五

L型而言,利用兩個L可以做出2*3的點燈情形,在組合一個凸型,可以做出2*5的點燈情形,在中間無限制的插入凸型就可以產生2*72*9….依此類推的點燈;單獨以凸型而言,四個凸型做不重複的90度旋轉後,可以環轉成一個4*4的點燈情形﹝如圖六﹞。然而十字型卻難以應用不重疊製造出最少的點燈情形。

1

 

 

 

1

 

 

 

1

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

1

 

 

 

1

 

 

 

1

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

1

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

圖六

 

 

 

 

 

 

 

如果將找出的基本型經過等比例的邊長放大後,是否仍可以成功點燈?或者直接獲得最少的點燈次數呢?結果是不然。因為當擴大邊長時,點燈的範圍相對影響,例如本來L型只影響了點燈的兩邊,但是一旦複製邊長後,其影響的範圍可能變成凸型,而凸型經由複製後其影響也將變成十字型﹝如圖七﹞,如此產生了一些重複點燈的現象﹝灰色地帶﹞,而使燈亮了又熄。

1

 

1

 

 

 

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

1

 

 

 

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

1

 

 

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

圖七

 

 

 

 

因此,就必須考慮是否可以透過基本型的組合,產生一個周圍皆為不點燈的狀態,則將此組合邊長擴大後,因為邊緣皆為0不點燈,所以不會影響擴大後的邊緣反應,但是這樣的基本型組合是否存在?否則就必須進行基本型的旋轉和重疊,然而此部份的考慮又將回到每個房間的點燈次數是否為奇數,於是問題又回到如何尋求奇數的次數上。

top

*骨牌效應下的點燈策略

既然點燈的次序並不影響結果,那麼就讓我們從左上角解析起吧!以5*5的方陣而言,針對每個房間以座標的標號表達之﹝如圖八﹞,則左上角11的房間只有兩種選擇,點與不點,如果11不點,則1221則不點、12不點21則需點,緊接著確定了12則考慮1322….,依序類推,我們可以從11122113223114233241152433425125344352354453455455,為判斷順序,然而為求最少次數解,則優先以不點為考量,並需來回檢試,從嘗試錯誤中尋得求解的方法,此方法極為複雜,僅靠人的思維是否很難達成,而需藉由電腦大量的比對與計算。

 

 

 

 

 

 

 

 

5û5

 

 

 

 

 

11

12

13

14

15

 

 

1

1

0

0

0

 

21

22

23

24

25

 

 

1

1

0

1

1

 

31

32

33

34

35

 

 

0

0

1

1

0

 

41

42

43

44

45

 

 

0

1

1

1

1

 

51

52

53

54

55

 

 

0

1

1

0

1

 

 

 

 

 

 

圖八

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

top

*行列推估的點燈策略

此外,如果已知固定的矩陣為有解之點燈情形,因點燈的次序會左右影響,而當上排的點燈情形確定後,下方一排的點燈情形也需參考上排的點燈位置進行奇數次之求解。例如2*2的點燈11的位置如果點燈,則12點燈、21也要點燈,或者是1221都不點燈,這樣才可以維持11的奇數次點燈。但是如果1221不點,則22一定要點燈,如此將造成1221的偶次數點燈,所以1221要點,且22也要點燈;相反的如果11不點燈其情形也如下﹝如圖九﹞,所以四個房間皆點燈為2*2之成功策略。

 

1

 

1

1

1

1

 

每一個房間的點燈次數皆為3

 

 

 

1

 

 

1

1

 

點燈成功!

 

 

 

 

 

 

 

 

 

1

0

1

0

1

0

22的位置皆為02的偶數點燈

0

 

 

0

0

 

0

1

 

此路不通!

 

 

 

 

 

 

 

 

0

 

0

0

0

0

 

皆行不通!

 

 

 

1

 

 

1

0

 

 

 

 

 

 

 

 

 

 

 

0

1

0

1

0

1

 

 

0

 

 

0

0

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

圖九

 

 

 

接著以2*2為基本矩陣,往下增加一列推判,發覺3132的位置上都無須點燈,也都能因2122的點燈動作,而完成點燈。但是相較於拼圖法之策略的發現,行列推估所得的策略卻不見得是最少點燈次數﹝如圖十﹞。因此,除了推算每個房間的奇數點燈次數外,還需對每個可行的點燈策略進行點燈次數和的計算,才能找到最少的點燈次數。

 

電燈

位置

 

點燈

次數

 

亮燈

情形

 

點燈次數

1

1

 

3

3

 

 

 

1

1

3

3

點燈次數4

0

0

 

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

 

1

1

 

 

 

0

0

1

1

點燈次數2

0

1

 

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

圖十

 

 

 

 

 

 

 

 

 

 

 

 

 

top

*鏡射、旋轉

當看到邊長皆相同的方陣時,你是否想過將方陣向左、向右轉90度甚至270度後,乍看雖然點燈位置不同,但是其實上下左右房間之間的奇數次數是一樣的呢?那麼如果是兩邊邊長不一樣的矩陣時,依然可以利用哪些策略直接找到其他組點燈的方法呢?

首先我們介紹旋轉,不論是方陣或矩陣,我門街可以隨意將其進行90180270度的旋轉,此並不改變房間上下左右之點燈情形,所以仍然可以成功點燈;

除了旋轉以外,還有一種如同照鏡子一樣的作用,想想看,當你照鏡子的時候,看到的自己﹝鏡中﹞與站在鏡子前的自己有哪些相同和不一樣的地方呢?這樣的作用我們稱為「鏡射」,我們可以把鏡子水平擺、垂直擺,也可以對角線擺,但是鏡射後的點燈情形是否仍可成功點燈呢?你不妨以下面各種可解的點燈策略試驗看看!

top

*二階行或列的點燈策略

根據上述之各種策略求得之二階行(或列)的點燈策略﹝如圖十二﹞

1

1

 

1

0

 

0

0

 

1

0

 

1

1

 

1

0

 

0

0

1

1

 

0

0

 

1

1

 

0

0

 

1

1

 

0

0

 

1

1

 

 

 

0

1

 

1

1

 

0

1

 

0

0

 

0

1

 

1

1

 

 

 

 

 

 

0

0

 

0

0

 

0

0

 

0

0

 

0

0

 

 

 

 

 

 

 

 

 

1

0

 

1

1

 

1

0

 

0

0

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

0

0

 

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

 

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

圖十二

由上可知,兩行的點燈在奇數列的情形下,皆以L型和凸型之拼圖為主,而偶數列則以2*2的點燈為基礎,且其影響範圍包括上下兩列,所以也形成了2*4之基礎型,組合成所有偶數列之解答。也就是說:當奇數列的時候,第偶數列皆為00,而第奇數列則為1001,依序交替;當為偶數列的時候,必存在2*2之點燈解,之後依序增加2*20矩陣或2*2的點燈解。

top

*三階行或列的點燈策略

根據上述之各種策略求得之三階行(或列)的點燈策略﹝如圖十三﹞

1

0

1

 

1

1

1

 

1

0

1

 

0

0

0

 

0

1

0

 

1

0

0

 

1

0

1

0

1

0

 

1

0

1

 

0

1

0

 

1

1

1

 

0

0

0

 

0

0

1

 

0

1

0

1

0

1

 

1

0

1

 

1

0

1

 

1

0

1

 

1

0

1

 

0

0

0

 

1

0

1

 

 

 

 

1

1

1

 

0

0

0

 

1

0

1

 

0

1

0

 

1

1

0

 

0

0

0

 

 

 

 

 

 

 

 

0

1

0

 

1

1

1

 

1

0

1

 

1

1

0

 

0

1

0

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

 

0

0

0

 

0

0

0

 

0

0

0

 

 

 

 

 

 

 

 

1

1

0

 

 

 

 

 

0

1

0

 

0

0

1

 

1

0

1

 

 

 

 

 

 

 

 

1

1

0

 

 

 

 

 

 

 

 

 

1

0

0

 

0

1

0

2*2為基礎的點燈策略

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

1

 

 

 

 

 

 

 

 

0

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

圖十三

由上可知,三行的點燈有三種基本的解題模組,第一種是3*3的點燈策略、一種是口字型的3*4點燈策略,最後一種則是以2*2為基礎之點燈策略。在奇數列的情形下,皆以3*3的點燈策略為主,輔以上下增加凸型和中間增加十字型的點燈即可達成。而偶數列則以2*2的點燈為基礎擴大到3*3的範圍,並加上凸型、,L型的點燈,或者以口字型點燈﹝3*43*6﹞。

top

*四階行或列的點燈策略

根據上述之各種策略求得之四階行(或列)的點燈策略﹝如圖十四﹞

0

1

0

0

 

0

0

0

0

 

1

0

0

1

 

0

1

1

0

 

1

1

1

1

0

0

0

1

 

1

1

1

1

 

0

0

0

0

 

0

1

1

0

 

1

0

0

1

1

0

0

0

 

1

0

0

1

 

0

1

1

0

 

0

0

0

0

 

1

1

1

1

0

0

1

0

 

1

1

1

1

 

0

1

1

0

 

1

0

0

1

 

0

0

0

0

 

 

 

 

 

0

0

0

0

 

0

0

0

0

 

0

0

0

0

 

0

0

0

0

 

 

 

 

 

 

 

 

 

 

1

0

0

1

 

0

1

1

0

 

1

1

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

1

0

 

1

0

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

1

1

圖十四

由上可知,四行的點燈有兩種基本的解題模組,第一種是口字型4*33*4之旋轉型﹞的點燈策略,另一種為以2*2為基礎之點燈策略。

top

*總結

如前所言,行列階數過大的情形,非人腦所能窮盡,必須善用電腦的試誤尋求,且其規律性越形複雜,較難看出端倪。但是,從四階以下之點燈策略中還是可以整理出幾種規律的基本型。

此外,從點燈的盤面中,有些解題的盤面具有對稱性,包括線對稱和點對稱,但也有些不具對稱性的。

你是否還玩出不一樣的心得,歡迎與我們分享!

top