有通法的。任意n階數字推盤都有通法,而且不難。
以4階數字推盤為例,復原分為3個階段
第一階段:復原前兩行(n階推盤為前n-2行)
第二階段:將後兩行排列為如下形式
第三階段:全部復原
將推盤各位置命名
第一階段:依照數字由小到大順序依次復原1-8
一、復原1 2 3 4
數字1 2 3的復原比較簡單,按照數字大小順序從1開始,依次復原。在保持已復原較小數字位置不變的情況下,很容易把較大數字移到相應位置,沒有什麼技術含量。
數字4分為兩種情況:
1、數字3復原後4恰巧移入相應位置,十分走運。(事實上在移動1、2、3過程中稍加留意,可以人為製造直接移入機會,省去下步笨辦法)
2、大多數情況下4無法直接移入,在D1處有其他數字佔位。這時很容易把4排列在D3的位置,即
依次移動D1→D2;C1→D1;C2→C1;D2→C2;D3→D2,推盤變為
這時透過使C1、C2、C3依次挪位,可把3、4逆時針轉入C1、D1,完成。
二、復原5 6 7 8,與1 2 3 4同理。
第二階段:保持前兩行不動,復原後兩行
1、將9移動至A3,並使A4不為空格,沒有技術含量。
2、分兩種情況
一、A4數字不是10:
保持A3、A4不動,很容易將10移至B3
二、A4數字是10:
保持9、10不動,將空格移至B4。依次移動A4→B4,A3→A4,B3→A3,保持A3、A4不 動,將10移至C3,得
依次移動A3→B3,A4→A3,B4→A4,B3→B4,C3→B3
兩種情況最後均得到
之後將9、10依次逆時針轉入A4、A3,完成。
3、將11、12移動至B4、B3
注意到移動9、10過程中只用到了A3:C4六格區域。所以保持9、10不變,利用B3:D4六格區域同理可以完成11、12的移動。
第三階段:復原
在第二階段基礎上,即
移動C3:D4四格數字,可得
依次移動9-12與13-15,很容易復原(12→C3,11→B3,13→B4,14→C4,15→D4,如此依次)。
1、以上為四階數字推盤通法,同理可推廣至n 階推盤。
2、數字推盤這種解法主要利用的是四格(3數字+1空格)、六格(5數字+1空格)的小區域旋轉迴圈。注意到迴圈的最小區域為2*2四格,所以邊角地區,如3和4需兩列一起解決。最後兩行透過將較小數字如9、10並列放置在最左側一列,為之後復原提供空間。n階最後兩行即需要依次把較小數字並列放在最左側,騰出右側空間。
3、以上方法為考慮各種情況,適用n階的最常規解法,略顯繁瑣。按照此法普通人一分鐘內可以完成4階復原。練熟後有些步驟可以省去。玩了兩小時發現的個人解法,可能有更優解。
復原最後一步13 14 15時會遇到以下兩種情況:
復原後為
不妨設空位為數字0(所設數字並不影響最終結論):
把推盤變為一階排列Ⅰ:(1 2 3 … 12 13 14 15 0)與Ⅱ:(1 2 3 … 12 13 15 14 0)
這時每次移動可看作數字0與其它某一數字x的對換(設0所在序數為n,事實上是0與n±1、n±4位置上元素的對換)
Ⅰ為正常情況,現考慮如何復原Ⅱ:復原排列Ⅱ等價於對排列Ⅱ進行對換(14,15),問題轉化為對換(14,15)能否寫成若干個(0,x)對換的乘積。
由於一次對換(14,15)改變原排列奇偶性,所以(0,x)對換個數必為奇數。而要將D4處數字0最終移回D4,移動次數必為偶數(上移次數等於下移次數,左移次數等於右移次數),所以排列Ⅱ無法還原為(1 2 3 … 12 13 14 15 0)。
也就是說,在保證其它數字位置不變的情況下,無法實現兩個數字的位置互換。
@高世奇 的回答裡有更普遍的證明。高世奇:數字華容道有何解法?
由於數字1-13的復原只利用6或4小區域迴圈移動,只涉及位置調整,與其它位置的數字無關,所以無論原始推盤如何排列,最終都可變換為Ⅰ、Ⅱ兩種情況。
設1-15全排列為A:A=B∪C,B中排列復原後為情況Ⅰ,C為情況Ⅱ。∀排列b∈B,作用對換(14,15),得排列c∈C,集合C同理。所以可以構造集合B到C的一一對映,即card(B)=card(C)。因此在數字推盤所有隨機排列中,有1/2的排列無解。
另外大家都是從哪裡找的APP,我在應用市場下的幾個APP都沒有遇到無解的情況。
有通法的。任意n階數字推盤都有通法,而且不難。
以4階數字推盤為例,復原分為3個階段
第一階段:復原前兩行(n階推盤為前n-2行)
第二階段:將後兩行排列為如下形式
第三階段:全部復原
將推盤各位置命名
第一階段:依照數字由小到大順序依次復原1-8
一、復原1 2 3 4
數字1 2 3的復原比較簡單,按照數字大小順序從1開始,依次復原。在保持已復原較小數字位置不變的情況下,很容易把較大數字移到相應位置,沒有什麼技術含量。
數字4分為兩種情況:
1、數字3復原後4恰巧移入相應位置,十分走運。(事實上在移動1、2、3過程中稍加留意,可以人為製造直接移入機會,省去下步笨辦法)
2、大多數情況下4無法直接移入,在D1處有其他數字佔位。這時很容易把4排列在D3的位置,即
依次移動D1→D2;C1→D1;C2→C1;D2→C2;D3→D2,推盤變為
這時透過使C1、C2、C3依次挪位,可把3、4逆時針轉入C1、D1,完成。
二、復原5 6 7 8,與1 2 3 4同理。
第二階段:保持前兩行不動,復原後兩行
1、將9移動至A3,並使A4不為空格,沒有技術含量。
2、分兩種情況
一、A4數字不是10:
保持A3、A4不動,很容易將10移至B3
二、A4數字是10:
保持9、10不動,將空格移至B4。依次移動A4→B4,A3→A4,B3→A3,保持A3、A4不 動,將10移至C3,得
依次移動A3→B3,A4→A3,B4→A4,B3→B4,C3→B3
兩種情況最後均得到
之後將9、10依次逆時針轉入A4、A3,完成。
3、將11、12移動至B4、B3
注意到移動9、10過程中只用到了A3:C4六格區域。所以保持9、10不變,利用B3:D4六格區域同理可以完成11、12的移動。
第三階段:復原
在第二階段基礎上,即
移動C3:D4四格數字,可得
依次移動9-12與13-15,很容易復原(12→C3,11→B3,13→B4,14→C4,15→D4,如此依次)。
1、以上為四階數字推盤通法,同理可推廣至n 階推盤。
2、數字推盤這種解法主要利用的是四格(3數字+1空格)、六格(5數字+1空格)的小區域旋轉迴圈。注意到迴圈的最小區域為2*2四格,所以邊角地區,如3和4需兩列一起解決。最後兩行透過將較小數字如9、10並列放置在最左側一列,為之後復原提供空間。n階最後兩行即需要依次把較小數字並列放在最左側,騰出右側空間。
3、以上方法為考慮各種情況,適用n階的最常規解法,略顯繁瑣。按照此法普通人一分鐘內可以完成4階復原。練熟後有些步驟可以省去。玩了兩小時發現的個人解法,可能有更優解。
復原最後一步13 14 15時會遇到以下兩種情況:
復原後為
不妨設空位為數字0(所設數字並不影響最終結論):
把推盤變為一階排列Ⅰ:(1 2 3 … 12 13 14 15 0)與Ⅱ:(1 2 3 … 12 13 15 14 0)
這時每次移動可看作數字0與其它某一數字x的對換(設0所在序數為n,事實上是0與n±1、n±4位置上元素的對換)
Ⅰ為正常情況,現考慮如何復原Ⅱ:復原排列Ⅱ等價於對排列Ⅱ進行對換(14,15),問題轉化為對換(14,15)能否寫成若干個(0,x)對換的乘積。
由於一次對換(14,15)改變原排列奇偶性,所以(0,x)對換個數必為奇數。而要將D4處數字0最終移回D4,移動次數必為偶數(上移次數等於下移次數,左移次數等於右移次數),所以排列Ⅱ無法還原為(1 2 3 … 12 13 14 15 0)。
也就是說,在保證其它數字位置不變的情況下,無法實現兩個數字的位置互換。
@高世奇 的回答裡有更普遍的證明。高世奇:數字華容道有何解法?
由於數字1-13的復原只利用6或4小區域迴圈移動,只涉及位置調整,與其它位置的數字無關,所以無論原始推盤如何排列,最終都可變換為Ⅰ、Ⅱ兩種情況。
設1-15全排列為A:A=B∪C,B中排列復原後為情況Ⅰ,C為情況Ⅱ。∀排列b∈B,作用對換(14,15),得排列c∈C,集合C同理。所以可以構造集合B到C的一一對映,即card(B)=card(C)。因此在數字推盤所有隨機排列中,有1/2的排列無解。
另外大家都是從哪裡找的APP,我在應用市場下的幾個APP都沒有遇到無解的情況。