小時候玩實體的玩具一直沒搞懂,現在長大了一下就懂了。總的來說,不管幾乘幾,拆分成一個個2×3的區域就行了。
下面以5×5為例(圖1):
第一行前三列1, 2, 3隨便排好,然後把4和5連在一起,放在右上角三行兩列的區域內(如圖2)。注意觀察,5在前,4在後,從左邊進入上面兩個格子正好是正序的。
然後排好第二行6, 7, 8三列,9和10挨在一起放在右邊三行兩列的區域內(如圖3)。此時發現10在前,9在後,且從右邊進入時,會出現逆序。於是將10和9兩格分別沿著二乘二的區域轉半圈(結果如圖4)。此時就可以順利排好9和10了。
可以總結出正序的情況為:大號在前,小號在後,需要從小的那邊進;反之,小號在前,則需要從大的那邊進。與正序相反的情況為逆序,此時需要利用這3×2的區域交換二者的次序。
現在用同樣的方法排第三行(如圖5),可以發現14和15是逆序,交換次序後填入(圖6)。
到了第四行,由於下面只剩一行,沒法在右邊構成3×2的區域來交換可能出現的逆序,所以我們兩行一起,從左到右依次排列。
第一列的最後兩行是16和21,放入兩行三列的區域時發現是正序,直接放入(圖7)。同理放入17和22(圖8),將18和23調整為正序並放入後,最後三格是一定能拼好的(如果隨機次序填入數字,將會有50%幾率導致最後三格拼不好)。
總結:逐行逐列排,每一行的最後兩列借用下兩行調整次序後排入,最後兩行從左至右逐列借用右兩列調整次序後排入,最後三格一定是正序。
PS 至於速通,則需要細緻的觀察力和一些省步驟的小技巧,乃至對更大的區域進行同時排序,我這裡就不進一步研究了。