2015-12-11 11:17:34 k73游戏之家 作者:小四
无意中研究出了单行(列)的排列重叠的确定位置的速算法,自己用这算法多次尝试后还没发现问题,下面就分享一下。
当排列组合非常多的时候,
如果你有把握能毫无差错全部列出来+比对后顺利找到重叠部份的话就用不到了XD
全长 = 该行(列)的总格子数
确定数 = 该行(列)的提示数字和最小间隔的总和
(e.g. 63 = 6+3+1 = 10 423 = 4+2+3+2 = 11)
自由度(假设叫Y) = 全长 - 确定数
※注意
当 该行(列)有其中一个提示数字 > 自由度Y 时才可用,
因为要满足这条件才会有完全重叠的部分
重叠数量 = 提示数字 - Y
重叠位置 = 从边界开始数Y格后的下一格开始填
光看文字会雾煞煞,所以举例吧
例①:6□□□□□□□□□□
全长 = 10 提示数字 = 6
确定数 = 6 自由度Y = 10 - 6 = 4
重叠数量 = 6 - Y = 2
重叠位置 = 从边界开始数4格后的下一格开始填
结果:
6□□□□■■□□□□
好啦,我知道只有一个数字用看得更快XD
例②:43□□□□□□□□□□
全长 = 10 提示数字 = 4、3
不过10格内2个数字应该也有人可以直接目测
确定数 = 4+3+1 = 8 自由度Y = 10 - 8 = 2
4的重叠数量 = 4 - Y = 2
3的重叠数量 = 3 - Y = 1
4的重叠位置 = 从左边开始数2格后的下一格开始填2格
3的重叠位置 = 从右边开始数2格后的下一格开始填1格
结果:
4 3 □□■■□□□■□□
例③:425□□□□□□□□□□□□□□□
全长 = 15 提示数字 = 4、2、5
这题开始还想用目测的有难度了
确定数 = 4+2+5+2 = 13 自由度Y = 15 - 13 = 2
此题的2不符合 提示数字>Y 的条件,所以此题只有4跟5能用
4的重叠数量 = 4 - Y = 2
5的重叠数量 = 5 - Y = 3
4的重叠位置 = 从左边开始数2格后的下一格开始填2格
5的重叠位置 = 从右边开始数2格后的下一格开始填3格
结果:
425□□■■□□□□□□■■■□□
例④:2341□□□□□□□□□□□□□□□
全长 = 15 提示数字 = 2、3、4、1
这题还能精準目测的真的是神人了!!
确定数 = 2+3+4+1+3 = 13 自由度Y = 15 - 13 = 2
此题的2跟1不符合 提示数字>Y 的条件,所以此题只有4跟3能用
3的重叠数量 = 3 - Y = 1
4的重叠数量 = 4 - Y = 2
这次有重叠的数字的位置都不是正好在左右边,
所以「边界」必须加上其他数字的数量跟间隔
如果「3」的重叠位置要从左边开始数的话,
除了自由度2以外还要加上「提示数字2」的2格还有1个间隔,
所以是2+2+1 = 5 从左边开始数5格后的下一格开始填
同理,
如果「3」的重叠位置要从右边开始数的话,
除了自由度2以外还要加上「1」、「4」还有2个间隔,
所以是2+1+4+2 = 9 从右边开始数9格后的下一格开始填
「4」的算法也是一样,
右数的话是4格,左数的话是9格
结果:
2341□□□□□■□□□■■□□□□
更多数字的排列的话也是同理,
只要该行(列)中有符合 提示数字 > 自由度 的条件,
该提示数字就一定会有可直接填入的重叠部分,
提示数字过多的时候,重叠位置要小心别算错