九號球推盤探討(Billiard 9-Ball Puzzle)

此為 Joshua Frankel 發明的益智玩具。


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

幾種變化

把玩了一下此盤的變化,其實就是10個球,任選一顆在中央,共有10種情況。

其它的9顆在外面繞成一圈,等於9顆球環狀排列,共有 8!= 40320種情況。

兩者相乘得 403200種變化。

 

轉動方式

將此盤視為中間一顆,然後外圍9顆的話,就會明朗許多。

外圍整圈轉動是視為一樣的,因此下面兩種情況視為相同。

(都是白球在中間,然後外圈順時針是123456789)

移動球的方式只有一種,就是把外圍的球推到中間,不管是哪個方向推,結果都會一樣,如上面的情況,把4號球推到中間,不管從右上推,或是左上推,或是下面推,結果都會一樣:

 

因此轉法只有一種,不分左右,就是把外面的9顆中的某顆球,推到中間就是了,不用管是從哪個方向推入的。

例如:

依序推入3號球、2號球、6號球到中間,就會變成狀態。

 

解法

一開始先盡量解,最後解不動時,再用下列「單對調」公式即可:

假設原本為「」狀態,只要依序將「139213920」推到中心即可解決。

一般狀態的時候,若要交換相鄰兩球的話,例如下圖狀態:

若要交換3號與8號球的話,先看好相對位置的號碼,如下圖:

依照「ABCDABCDE」的位置號碼,此例是「864386432」號球,依序推入中心即可達成3, 8號球相鄰交換的效果。

 

光用此公式,就可以把此「9號球推盤」轉出來了。

 

 

若覺得完全靠相鄰兩個交換太慢的話,下面還有隔一球交換、兩球交換、三球交換、四球交換的公式僅供參考,方法都不唯一,表中有列出所有的交換方式。

公式使用時,請自行轉換成自己對應的數字。

Original State Algorithm(建議轉法) Alterntive Alg.(其他轉法)
139213920

825830530, 659065190,
874625740, 913764870,
915609560, 167506750,
293129310, 164275180.

230542540

762986130, 746210870,
380613680, 612590560,
192159850, 315893890,
981980310, 856394520.

6106410

6213690, 7342750,
6296340, 9634260,
5721380, 5721370.

4150410

4528630
3974520
2510250
3528640

 

 

最佳解

把推一顆球到中心,計算為1步的話,外圈旋轉不計,

若固定要轉成順時針依序是123456789的話,只要 10 步即能解出所有狀態,以下是用電腦跑出的結果:

最佳解步數

有幾種情況

0

1

1

9

2

63

3

414

4

2511

5

14013

6

63792

7

162945

8

135230

9

24219

10

3

總共

403200

其中,須要10步的只有三種情況,分別是順時針「987654321, 0」、「135792468, 0」、「162738495, 0」,都是蠻規則的pattern。

 

若順逆時針排列都當作解出來的話,只要9步即可,以下是用電腦跑出的結果:

最佳解步數

有幾種情況

0

2

1

18

2

126

3

828

4

5022

5

26280

6

100692

7

169200

8

95758

9

5274

總共

403200

 

感謝我們系,陳秉君同學,跟我討論一整晚,並寫程式跑出上表。

下面是把程式改成Javescript的方式呈現,請輸入您的九號球推盤「外圈的數字」,中心球不用輸入,程式會自己判斷,程式會跑出某個最佳解給你。

有的情況會跑比較久(依電腦速度而定),正常不會超過1分鐘,請耐心等待。

 

請依序輸入外圈9個數字(白球為0):