翻轉時鐘探討(Hockey Puck Puzzle, IQ 139)
此Puzzle原來稱作「IQ 139」,又因為其外觀很像曲棍球的球(Puck),所以又稱作「Hockey Puck Puzzle」,是誰發明的已不可考。但我覺得因為切成12份,跟時鐘有點像,所以中文就稱它「翻轉時鐘」吧。
它還被做成了很多不同的圖案,詳見此。
它其實就像是單層的Square-2。
12個數字環狀排列,最多就是11! = 39916800種。
又可以轉出相鄰交換的情況(transposition),所以就此39916800種情況全部都會出現。
轉動的方式很簡單,就是可以任意連續6個翻轉。
->
左圖就是原始狀態,然後右圖就是左半圈被翻轉了。
雖然翻過來沒寫字,但是我們紀錄時,還是紀錄其數字,由1點鐘的方向的數字開始,順時針紀錄,如上圖,即表示成:
[1234567890AB] -> [123456BA0987]
而以下解法的翻轉符號,我們用翻轉的位置來記:而且每次翻的時候,1號位置的這個數字都是固定不會被翻。
舉例來說:
[1234567890AB]-> 2 -> [1287654390AB]
而不是變成 [0934567821BA]
若了解後,就可以看的懂下面解法了。
此解法算是一個理解型的解法,因為剛好12小塊被塗上了6個顏色,兩兩相同,所以經過嘗試後,試出來的解法。
步驟一、兩兩配對
像下圖,配成同顏色的在一起即可,
有時會一直配不出來,但再試一會兒應該就沒問題了。
步驟二、翻正
翻到數字面都朝前
步驟三、三循環或四循環
雖然是公式,其實是嘗試出來的,轉幾次後可以看其變化並了解它的運作,不用背。
示意圖 | 公式 | 說明 | |
C3 | 135135 | 順時針三循環 | |
C4 | 21453412 | 逆時針四循環 |
用此兩個公式,就可以把全部都換好了。當然,誰要先換,中間的順序是要慢慢思考的,順序好的話,換的次數就比較少。
我自己試了幾次後,大致上是這樣的流程:
1. 先把[12]跟[56]分別放到9, 10點鐘與 2, 3點鐘的位置
2. 其他的四組若已經是4循環了,就直接用C4即可。否則先看看怎麼用三循環讓其造成四循環,一定可以,不過可能需要在紙上稍微畫一下,看要固定哪一組;並先把要固定的那組先用4循環放到6,7點鐘的位置,然後其他的用三循環的換好後,就可以操作四循環了。
不太懂的話,建議先用自己的流程試幾次,應該就會懂了。
是最簡單的方法,也很好記,但最大的缺點就是步數非常多。
不要管顏色,不要管正反面,只有一個非常簡單的相鄰交換公式
圖示 | 公式 | ||
T1 | 123456123456 | 第一次操作此公式可能會覺得很怪,因為除了兩個白色小塊交換後,其他的全部都變成背面了,但沒關係,等全部數字都好了,就都會是正面了。 |
流程也很簡單,就是先看好1的位置後,把2慢慢換到1的旁邊,然後再慢慢把3換到2的旁邊,依此類推,最後就會好了。
以下是其他單對調的公式,不過基本上是用不到,純粹是紀錄用,所以就不畫圖了。
交換的位置 | 公式 | |
T2 | 1<->A |
6314563215431 |
T3 | 1<->0 |
6521346521 |
T4 | 1<->9 |
1243421463214 |
T5 | 1<->8 |
6534214312 |
T6 | 1<->7 |
6546514243562 |
最佳解(God's Algorithm)
後來我們寫程式跑出所有11!的最佳解情況,如下表:
最佳解步數 |
有幾種情況 |
0 |
1 |
1 |
6 |
2 |
30 |
3 |
147 |
4 |
708 |
5 |
3408 |
6 |
16177 |
7 |
75384 |
8 |
334836 |
9 |
1400827 |
10 |
5019071 |
11 |
12427541 |
12 |
14323585 |
13 |
6051014 |
14 |
263992 |
15 |
73 |
Total |
39916800=11! |
以下是所有需要15步才能解的出來的73種情況:
126A7350B849, 12B7564A9083, 13249A0B5768, 13546879A0B2, 13508B7A9246, 135B2497A608, 1368570B9A24, 1380B579246A, 138A706924B5, 1394627B805A,
13086A9724B5, 130B9A685724, 13A4957280B6, 13A7B4592068, 147258A69B30, 147058A29B36, 14A258369B70, 14B3806A7925, 1526308B7A94, 15380B79A426,
15307A8B9426, 15948B7A3026, 1594BA726083, 15972B483A06, 1506249A738B, 15B7A9286403, 1624A57930B8, 1647508A92B3, 16483750B29A, 1684B590273A,
1687924350BA, 16805792B4A3, 16A7940B2835, 179A5B203846, 17B029486A53, 18246B79503A, 1843A602B759, 18596072B4A3, 1864A972B053, 18605972A3B4,
1806A4B29357, 180B5372649A, 18A25B369470, 18B4297A3065, 18B4A3726059, 18B0357246A9, 18B0526374A9, 19267A4B8035, 19206A7384B5, 1920B584736A,
1920B753864A, 1984A375B026, 19A4620378B5, 19A6B2405738, 19B573846A20, 102A3B759486, 10537264A8B9, 108A964752B3, 10B35247968A, 10B79683524A,
1A2B53649708, 1A2B97085364, 1A302B579468, 1A302B748596, 1A42B7950683, 1A4086B53729, 1A645308972B, 1A648B732059, 1A6849572B03, 1A938605B427,
1A942B753086, 1AB089756423, 1B243576809A
感謝我們系的研究生,陳秉君同學,寫程式跑所有的結果,基本上,本文所有的內容主要都是他的 ideas。
最佳解的程式,因為並無法在幾秒內跑出結果,所以更不用說要轉成Javascript放在網頁上讓大家查詢。
有興趣的人可以下載程式回去執行,
一開始1選項是直接搜尋最佳解,2選項是先建立搜尋表(此步驟會花10分鐘左右,依電腦速度而定),建立完後即可快速搜尋最佳解。
A[0]一定要輸入1,接下來是順時針輸入數字2~12。
待研究出如何在網頁上快速執行,我會再弄成Javascript的型式放上來。