魔錶玩具及「The Clock」

秒針分針滴答滴答在心中/我的眼光閃爍閃爍好空洞/我的心跳撲通撲通的陣陣悸動

題圖是我在寶購買的智力玩具,它自稱是魔方的發明者魯比克(Ern? Rubik)發明的——而我也沒有去驗證是否屬實。

(說句題外話:我曾經讀一本「科普讀物」,看到某也譯者赫然寫著「盧比克的立方體」,我便感覺這本翻譯的書可能不用看下去了,有機會找個原文的看算了。)

下面把這個玩具簡化一些,就得到了POJ1166"The Clock"——

9隻鐘錶排成3*3的方陣,每隻鐘錶只能指向上、下、左、右四個位置。

9種作用方式,每種使一些鐘錶的指針順時針旋轉90°:

例如

使用這9種作用,使得所有鐘錶都指向正上方 (記為狀態0)。

求使得總作用次數最少的策略。


首先,每個鐘錶按4次相當於沒有按;

其次,按的次序不影響結果,也就是說先按1次A再按1次B,和先按1次B再按1次A作用是相同的。

再次,9個循環的方法我就不介紹了,下面說明直接計算的方式。

大致思路是:

  • 使用 need(i) 表示第 i 個鐘錶還需要的順時針旋轉90°的次數,例如

  • 使用 action(i) 表示解法策略中按第 i 個鐘錶的次數
  • 建立 {need(i)|0leq i leq8}{action(i)|0leq i leq8} 之間的同餘方程

得到

  • 求解:

temp_0 = need(3) + need(5) - need(4) - need(0) - need(1) - need(2)

temp_1 = need(7) - need(6) - need(5) + need(0) + need(2)

temp_2 = need(7) - need(8) - need(3) + need(0) + need(2) ,則

action(1) = ( temp_0 + 2times temp_1 + 2times temp_2) mod 4

action(0) = ( temp_1 - 2times action(1)) mod 4

action(2) = ( temp_2 - 2times action(1)) mod 4

action(3) = ( need(0) - action(0) - action(1)) mod 4

action(4) = ( need(1) - action(0) - action(1) - action(2)) mod 4

action(5) = ( need(2) - action(1) - action(2)) mod 4

action(6) = ( need(3) - action(0) - action(3) - action(4)) mod 4

action(8) = ( need(5) - action(2) - action(4) - action(5)) mod 4

action(7) = ( need(7) - action(4) - action(6) - action(8)) mod 4


這類問題在遊戲中十分常見——

例如「大唐詩錄」中「大雁塔」拼圖謎題(實在找不到圖片了)。

例如「三國群俠傳」中「龍蛇老人」拼圖謎題:


推薦閱讀:

數學其實很酷!這些小遊戲把數學融入孩子生活,馬上就能玩
如何用函數闖作(4):地心說的奇蹟
增加一個維度可以解決問題,有哪些經典案例?
如何判斷自己是否適合數學研究?
數學是世界上最高級的遊戲

TAG:算法 | 趣味数学 |