翻轉時鐘探討(Hockey Puck Puzzle, IQ 139)

此Puzzle原來稱作「IQ 139」,又因為其外觀很像曲棍球的球(Puck),所以又稱作「Hockey Puck Puzzle」,是誰發明的已不可考。但我覺得因為切成12份,跟時鐘有點像,所以中文就稱它「翻轉時鐘」吧。

它還被做成了很多不同的圖案,詳見此

它其實就像是單層的Square-2。

 


  1. 幾種變化
  2. 轉動方式
  3. 解法一
  4. 解法二
  5. 最佳解

幾種變化

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的型式放上來。