[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 12# batman
从五至一的筛选可以用set
从一至五的筛选可以用findstr
感觉效率不会差别太大
当然没有实测也不敢确定

顺子其实也没什么难的
就目前的需要还用不到判断+1和-1
直接罗列出二/三类中所有的顺子组合
然后一次findstr即可
天的白色影子

TOP

rem 对x的位置严格限定后得到的结果,与楼上的不同,没仔细看谁有问题
rem class1: 1
rem class2: 26          不包含8x88 88x8 888x
rem class3: 424     不包含88xx aaax abcx以及其它x变化位置的模式
rem class4: 1700    不包含8xxx aaxx xaax以及其它xx变化位置的模式
rem class5: 7868
天的白色影子

TOP

修正了一下
主要是未考虑逆序顺子问题
现在筛选结果基本上与batman的代码一致了
五类数的统计数如下
1,32,488,1691,7788
batman的代码把8888归为了二类
天的白色影子

TOP

忘了将自己findstr的方案贴出来了
效率应该比楼上的代码好一点
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. (for /l %%i in (10000,1,19999) do set v=%%i&echo !v:~1!)>arr.tmp
  4. set class1=8888
  5. (echo %class1%)>class1.txt
  6. findstr /v "%class1%" < arr.tmp > arr2.tmp
  7. set class2=.888
  8. set class2=%class2% 0123 1234 2345 3456 4567 5678 6789
  9. set class2=%class2% 9876 8765 7654 6543 5432 4321 3210
  10. set class2=%class2% 0000 1111 2222 3333 4444 5555 6666 7777 9999
  11. findstr "%class2%" < arr2.tmp > class2.txt
  12. findstr /v "%class2%" < arr2.tmp > arr3.tmp
  13. set class3-1=..88
  14. set class3-1=%class3-1% .000 .111 .222 .333 .444 .555 .666 .777 .999
  15. set class3-1=%class3-1% .012 .123 .234 .345 .456 .567 .678 .789
  16. set class3-1=%class3-1% .210 .321 .432 .543 .654 .765 .876 .987
  17. findstr "%class3-1%" < arr3.tmp > class3-1.tmp
  18. set class3-2a=00.. 11.. 22.. 33.. 44.. 55.. 66.. 77.. 88.. 99..
  19. set class3-2b=..00 ..11 ..22 ..33 ..44 ..55 ..66 ..77 ..99
  20. findstr "%class3-2a%" < arr3.tmp | findstr "%class3-2b%" > class3-2.tmp
  21. set class3-3a=0.0. 1.1. 2.2. 3.3. 4.4. 5.5. 6.6. 7.7. 8.8. 9.9.
  22. set class3-3b=.0.0 .1.1 .2.2 .3.3 .4.4 .5.5 .6.6 .7.7 .8.8 .9.9
  23. findstr "%class3-3a%" < arr3.tmp | findstr "%class3-3b%" > class3-3.tmp
  24. copy /b class3-?.tmp class3.txt >nul
  25. findstr /v /g:class3.txt < arr3.tmp > arr4.tmp
  26. set class4-1=...8
  27. set class4-1=%class4-1% ..00 ..11 ..22 ..33 ..44 ..55 ..66 ..77 ..99
  28. findstr "%class4-1%" < arr4.tmp > class4-1.tmp
  29. set class4-2a=.00. .11. .22. .33. .44. .55. .66. .77. .88. .99.
  30. set class4-2b=0..0 1..1 2..2 3..3 4..4 5..5 6..6 7..7 9..9
  31. findstr "%class4-2a%" < arr4.tmp | findstr "%class4-2b%" > class4-2.tmp
  32. copy /b class4-?.tmp class4.txt >nul
  33. findstr /v /g:class4.txt < arr4.tmp > class5.txt
  34. del *.tmp
复制代码
天的白色影子

TOP

返回列表