數字華容道,一個很有趣的遊戲,就是在一個n階數字陣裡,只有一個空格,位置打亂,讓重新按順序排好。自己做著做著,發現可以有方法規律,並且百用百順,就總結並拿出來和大家共同分享探討:一行一行的弄順,
拿四階的舉例:
先把1,2,3,4無論是什麼順序的弄到第一行,
第二行無論是什麼數,無論是什麼順序的,不予理睬,把第一行弄順即可,
比如2,4,3,1
先把1弄到2之前,再把3弄到4之前,具體如何擺放,可能還需要和下一行的(2,1)(2,2)(2,3)位置上的數字互換,也可能不需要,這裡的(x,y)是指的下一行的x代表的行數和y代表的列數,
以此類推,直到把倒數第二行的數字也都弄好為止,
最後一行的數字在倒數第二行的數字不變位置的情況下,
按數序排好即可。
還有,在具體每
一行的位置排序時,要注意
如每一個位置的數字只能跳到相隔偶數的個數的位置上面,
拿一個4×4舉例,
第一行是2,3, 4,1
第二行是6,5,8, 7
連在一起可以看成一個數字環,首尾相接
就是2, 3,4,1,7,8,5,6,也可以看成78562341
第一步:5跳2個數,就是25341786,
第二步:然後1跳4個數,變成12534786,
第三步:5跳4個數,變成12347856
第四步:7跳2個數變成12348576
第五步:5跳2個數變成12348765
數字環形成順序正確,形成兩行
第一行是1234,第二行是5678
至於為什麼每個數都能跳過偶數個數的位置,原因就是因為每個數在透過跳躍別的數字而改變位置時,必須是它的上方或者下方出現空格時,那就是在向它同列的下一行或者上一行移位,那就是相當於跳過了兩倍的它旁邊的列數的個數,那就是等於跳過偶數個數的數字位置。
由此我還想到當n* n個數字華容道時,在n-1行的數字華容道都排好時,很有可能會出現最後一行卻還不好的情況,那就是這個遊戲沒設計好,它的位置跳過的數字個數總和是奇數個,而不是偶數個,拿3*3的數字華容道第三行的87來舉例,需要移動的位置個數是1個,就是把8移動到7後面就行。如果在上面2行都排好的情況下,這行如果是87
那麼這個數字華容道就是做不了的。
再舉例,如果是4×4,假定前面全部排好,如果最後一行是13,16,15,14,那就是需要跳過奇數個位置的數字,首先,14移到16前面,需要跳過2個數,那就是13,14, 16,15,15跳到16前面,跳過1個數,那還是無法實現的。
可以這樣證明,一個數列,打亂的那種,如果需要跳過的數字個數和是奇數個,但是如果你每次跳過的數字(就像數字華容道那樣),個數只能是偶數個,那麼是不可能能達到目標的,因為你跳過的的數字個數的總和只可能是偶數個,不可能是奇數個
數字華容道,一個很有趣的遊戲,就是在一個n階數字陣裡,只有一個空格,位置打亂,讓重新按順序排好。自己做著做著,發現可以有方法規律,並且百用百順,就總結並拿出來和大家共同分享探討:一行一行的弄順,
拿四階的舉例:
先把1,2,3,4無論是什麼順序的弄到第一行,
第二行無論是什麼數,無論是什麼順序的,不予理睬,把第一行弄順即可,
比如2,4,3,1
先把1弄到2之前,再把3弄到4之前,具體如何擺放,可能還需要和下一行的(2,1)(2,2)(2,3)位置上的數字互換,也可能不需要,這裡的(x,y)是指的下一行的x代表的行數和y代表的列數,
以此類推,直到把倒數第二行的數字也都弄好為止,
最後一行的數字在倒數第二行的數字不變位置的情況下,
按數序排好即可。
還有,在具體每
一行的位置排序時,要注意
如每一個位置的數字只能跳到相隔偶數的個數的位置上面,
拿一個4×4舉例,
第一行是2,3, 4,1
第二行是6,5,8, 7
連在一起可以看成一個數字環,首尾相接
就是2, 3,4,1,7,8,5,6,也可以看成78562341
第一步:5跳2個數,就是25341786,
第二步:然後1跳4個數,變成12534786,
第三步:5跳4個數,變成12347856
第四步:7跳2個數變成12348576
第五步:5跳2個數變成12348765
數字環形成順序正確,形成兩行
第一行是1234,第二行是5678
至於為什麼每個數都能跳過偶數個數的位置,原因就是因為每個數在透過跳躍別的數字而改變位置時,必須是它的上方或者下方出現空格時,那就是在向它同列的下一行或者上一行移位,那就是相當於跳過了兩倍的它旁邊的列數的個數,那就是等於跳過偶數個數的數字位置。
由此我還想到當n* n個數字華容道時,在n-1行的數字華容道都排好時,很有可能會出現最後一行卻還不好的情況,那就是這個遊戲沒設計好,它的位置跳過的數字個數總和是奇數個,而不是偶數個,拿3*3的數字華容道第三行的87來舉例,需要移動的位置個數是1個,就是把8移動到7後面就行。如果在上面2行都排好的情況下,這行如果是87
那麼這個數字華容道就是做不了的。
再舉例,如果是4×4,假定前面全部排好,如果最後一行是13,16,15,14,那就是需要跳過奇數個位置的數字,首先,14移到16前面,需要跳過2個數,那就是13,14, 16,15,15跳到16前面,跳過1個數,那還是無法實現的。
可以這樣證明,一個數列,打亂的那種,如果需要跳過的數字個數和是奇數個,但是如果你每次跳過的數字(就像數字華容道那樣),個數只能是偶數個,那麼是不可能能達到目標的,因為你跳過的的數字個數的總和只可能是偶數個,不可能是奇數個