骇客帝国 发表于 2016-4-4 11:36
像你这个里面列出的最后一个9896878580 9896与878580之间就跳键盘了8与6是斜向相邻,不符合楼主提出的 ...
一步写出代码合成是最理想的,步子越多越不安全。我这个去掉每组重复的行可能不太准确
骇客帝国 发表于 2016-4-4 11:36
像你这个里面列出的最后一个9896878580 9896与878580之间就跳键盘了8与6是斜向相邻,不符合楼主提出的 ...
看样子还要用你那样清除不是纵横相邻的词组清除一次。
我只清掉重复词组。
本帖最后由 骇客帝国 于 2016-4-4 15:49 编辑
【补充】
鉴于位数越大字典越大,而符合要求的数据相对越少,相应需要筛选掉的数据也就越多,
为了减少数据处理量、减少UE卡顿、减少耗时,
我们可以先做出2、3、4位符合键盘滚动要求的字典
然后在进行组合做出5、6、7、8、9、10甚至更多位数的字典
【方法与步骤】
1、先制作出2、3、4位纯数字字典(可用品轩字典生成器制作、方法略);
2、利用UE结合正则式命令替换掉不符合要求的行为空行,再删除空行(方法见本帖16楼)得到2、3、4位符合键盘滚动要求的字典。
3、再利用品轩字典生成器进行组合生成需要的字典
组合方式: 2+3=5 3+3=6 3+4=7 4+4=82+3+4=9 ..... 以此类推
举例:制作8位如图设置制作
4、制作出来后需再利用UE结合正则式命令替换掉不符合要求的行为空行,再删除空行!
因为组合之后仍然会出现不符合要求的数据
比如:1236、4789这二个符合键盘滚动要求的4位,在组合成8位12364789时6到4就不符合要求,因此还需筛选删除。
成品出炉
骇客帝国 发表于 2016-4-4 15:39
成品出炉
主人,字典能给一个吗?
本帖最后由 我来了我来了 于 2016-4-5 00:00 编辑
实在太懒打字了想不到我竟然会打了这么多的字:(
既然进来了 想想还是发了吧 跟大家先说说风骚思路吧 为了减少大量复杂步伐 其实只要找出2个不相连的数就行,具体看键盘布局(这个其实很容易就能找到,看着键盘排列敲入就行,我找到2位数不相邻的只有60行,重复找了很多次都是哦)
下面这个我就是先找出不相连2个数键盘布局(或者不相连3位数都可,但是不相连2位数条件已足够的了) 然后感觉接下来处理就容易多了
因为各种手机及输入法键盘布局都不尽相同为适应大众化就先以电脑键盘排列为例 明白过程后再搞其它键盘布局也是一样的吧
由于版主要求需要过程 还是分步一下跟大家说明一下吧
先建立个B文件(这个就是原先找出不相连2个不相连数)
shell
然后执行第1步
awk 'NR==FNR{a[$0];next}{for(i in a)if(index($0,i))next}1' b.txt a.txt就能得到滚键盘可沿键盘横向、纵向滚动,不斜向滚动结果了</FONT>
然后再处理掉,版主提出的要求不连续按同一键两次行
执行第2步
grep -vPi '(.)\1{1}' file 然后大家想要正确结果就出来了
另外听说版主测试了10位数
我来了我来了 发表于 2016-4-4 23:41
实在太懒打字了想不到我竟然会打了这么多的字
既然进来了 想想还是发了吧 跟大家先说说风骚思路吧 ...
你的结果比我多了一倍,不是你错了就是我错了!
我看看你的结果
本帖最后由 骇客帝国 于 2016-4-5 00:13 编辑
我来了我来了 发表于 2016-4-4 23:41
实在太懒打字了想不到我竟然会打了这么多的字
既然进来了 想想还是发了吧 跟大家先说说风骚思路吧 ...
你的结果中有17490条数据不符合要求
我来了我来了 发表于 2016-4-4 23:41
实在太懒打字了想不到我竟然会打了这么多的字
既然进来了 想想还是发了吧 跟大家先说说风骚思路吧 ...
没细看,原来你是以电脑键盘为例
但有键盘3和0是相邻的吗?
我截图中最后一条98989630就不符合
本帖最后由 骇客帝国 于 2016-4-5 00:29 编辑
我来了我来了 发表于 2016-4-4 23:41
实在太懒打字了想不到我竟然会打了这么多的字
既然进来了 想想还是发了吧 跟大家先说说风骚思路吧 ...
仔细看了一下,你是将0与1、2、3都列为相邻了
将0与1、2列为相邻还能解释,因为有的键盘0是大键盘,处在1和2下面,而3下面一般是小数点!
不过,你的方法应该是对的,只是怎么认识0所处的位置!
骇客帝国 发表于 2016-4-5 00:18
没细看,原来你是以电脑键盘为例
但有键盘3和0是相邻的吗?
由于当时联想到的是滚键盘数字,就把电脑键盘当作成全局数字看了,所以把0与3也列入相邻了,其实也认可你说的0与3是不相邻
但又以滚数字这种以全局作为可能性,在实际中大家把0与3可列可不列入,这个估计是是人性化问题。
本帖最后由 随风飘 于 2016-4-5 12:39 编辑
我前面我做那个多止一举,去掉重复相邻组,结果不对。
两步:1.品轩合成 2.用第三方工具(linux\BT5\CYGWIN等)一步完成就可,去掉多余的。
用UE去掉这个多余的非常慢,
UE去空格效率不太行,去掉多余行时后面加\r\n会好些,免去去空格的步子。
用品轩合成去重复数字与不相邻与斜向的结果为:纯8位结果--14826行
先做8位去掉重复数字与不相邻与斜向纯8位结果--14826行
是一样的,这个结果应没错
grep -vP "^.*00.*$|^.*11.*$|^.*22.*$|^.*33.*$|^.*44.*$|^.*55.*$|^.*66.*$|^.*77.*$|^.*88.*$|^.*99.*$|^.*01.*$|^.*02.*$|^.*03.*$|^.*04.*$|^.*05.*$|^.*06.*$|^.*07.*$|^.*09.*$|^.*13.*$|^.*15.*$|^.*17.*$|^.*16.*$|^.*18.*$|^.*19.*$|^.*10.*$|^.*20.*$|^.*24.*$|^.*26.*$|^.*27.*$|^.*28.*$|^.*29.*$|^.*31.*$|^.*34.*$|^.*35.*$|^.*37.*$|^.*38.*$|^.*39.*$|^.*30.*$|^.*42.*$|^.*43.*$|^.*46.*$|^.*48.*$|^.*49.*$|^.*40.*$|^.*51.*$|^.*53.*$|^.*57.*$|^.*59.*$|^.*50.*$|^.*61.*$|^.*62.*$|^.*64.*$|^.*67.*$|^.*68.*$|^.*60.*$|^.*71.*$|^.*72.*$|^.*73.*$|^.*75.*$|^.*76.*$|^.*79.*$|^.*70.*$|^.*81.*$|^.*82.*$|^.*83.*$|^.*84.*$|^.*86.*$|^.*91.*$|^.*92.*$|^.*93.*$|^.*94.*$|^.*95.*$|^.*97.*$|^.*90.*$" a.txt >b.txt
用品轩合成去重复数字与不相邻与斜向结果: