[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 4# 思想之翼
是我没明白你意思 还是你表达不清呢?
我说一下我代码过程
首先 将00000 - 99999 五位数 分别取10个组合的和(如第一位加第二位... 一直至第四位加第五位, 这样得到10个组合的和, 得到10个数,
前面得到的10个数,再分别选4个数排列(10选4)即210个排列,然后将这个数的210个不重复的排列写入文件,如28888 含有的排列0000 就将28888写入00001.txt
你的表达我不是很清楚,也许我的表达 你也不清楚,
给个图说明一下

TOP

本帖最后由 B魔方大人 于 2015-11-8 04:13 编辑

回复 13# 思想之翼
修改后如下?同时post出我的疑问,表示不懂。另外,以下代码稍显笨拙,望能人修改。
  1. '我举个例子,比如五位数12345
  2. '取两两和的个位数,共十个。
  3. '        第1位 + 第2位=3
  4. '        第1位 + 第3位=4
  5. '        第1位 + 第4位=5
  6. '        第1位 + 第5位=6
  7. '        第2位 + 第3位=5
  8. '        第2位 + 第4位=6
  9. '        第2位 + 第5位=7
  10. '        第3位 + 第4位=7
  11. '        第3位 + 第5位=8
  12. '        第4位 + 第5位=9
  13. '十个数中取每4个为一组,210种组合。
  14. '        第一组保存001/*.txt
  15. '        第二组保存002/*.txt
  16. '        依次……
  17. '        从你的例子中看出
  18. '        第一组为:十个数中1234位,保存到3457.txt
  19. '        第1位 + 第2位=3
  20. '        第1位 + 第3位=4
  21. '        第1位 + 第4位=5
  22. '        第1位 + 第5位=6
  23. '        存入0001/03456.txt
  24. '        第二组为:十个数中1235位,保存到3456.txt
  25. '        第1位 + 第2位=3
  26. '        第1位 + 第3位=4
  27. '        第1位 + 第4位=5
  28. '        第2位 + 第3位=5
  29. '        存入0002/3455.txt
  30. '        第三组为:十个数中1236位,保存到3457.txt
  31. '        第1位 + 第2位=3
  32. '        第1位 + 第3位=4
  33. '        第1位 + 第4位=5
  34. '        第2位 + 第4位=6
  35. '        存入0003/3456.txt
  36. '        依次……
  37. '以上是单独一个五位数的处理方式。
  38. '循环一次带入一个数,分别处理。
  39. '组文件夹与txt文件保存到当前文件夹,非D:\数据\
  40. '最后一句wsh.echo o测试用,可删。
  41. '你所说的,每个五位数,分别对应一组数据下的10000个txt,我表示不懂。
  42. Dim Num,M(),k,Num1,Num2,sl,fso,ws
  43. Set fso = CreateObject("scripting.filesystemobject")
  44. sl="0000"
  45. For i=0 To 99999
  46.         If Len(CStr(i))<5 Then Num= Mid(sl,1,5-Len(CStr(i))) &CStr(i)
  47.         Call tex(Num)
  48. Next
  49. 'Call tex("29999")
  50. Sub tex(strNum)
  51.         Dim i,j,k,l,o,str_,p
  52.         For i=1 To Len(strNum)
  53.                 For j=i+1 To Len(strNum)
  54.                         k=k+1:ReDim Preserve M(k)
  55.                         M(k) = CStr((CInt(Mid(strnum,i,1)) + CInt(Mid(strnum,j,1))) mod 10)
  56.                 Next
  57.         Next
  58.         For i=1 To ubound(m)
  59.                 For j=i+1 To ubound(m)
  60.                         For k=j+1 To ubound(m)
  61.                                 For l=k+1 To ubound(m)
  62.                                         If i<>j And i<>k And i<>l And j<>k And j<>l And k<>l then
  63.                                                 o=o+1:If Len(CStr(o))<3 Then p = Mid(sl,1,3-Len(CStr(o))) &CStr(o)
  64. '                                                str_ = str_ & "五位数:" & strNum &Chr(13)&chr(10)
  65. '                                                str_ = str_ & "尾数和的个位:" & Join(M) &Chr(13)&chr(10)
  66. '                                                str_ = str_ & "第" & p & "组取:" & i & j & k & l &"位" &Chr(13)&chr(10)
  67. '                                                str_ = str_ & "保存到:" & "D:\数据\" & p & "\0" & CStr(CInt(M(i) & m(j) & m(k) & m(l))+1) &".txt" &Chr(13)&chr(10)
  68. '                                                wsh.echo str_:str_=""
  69.                                                 If fso.FolderExists(p)=False Then fso.CreateFolder(p)
  70.                                                 Set f=fso.OpenTextFile(p & "\0" & CStr(CInt(M(i) & m(j) & m(k) & m(l))+1) &".txt",8,True)
  71.                                                 f.WriteLine strNum
  72.                                                 f.Close
  73.                                         End if
  74.                                 Next
  75.                         Next
  76.                 Next
  77.         Next
  78.         wsh.echo o
  79. End Sub
复制代码
1

评分人数

TOP

本帖最后由 思想之翼 于 2015-11-7 12:23 编辑

回复 6# pcl_test
感谢关注!
00000-99999是五位数的全组合:一个五位数,第1-5位可以是0123456789,那么5个0123456789,全组合就是00000-99999这10万个数值

在五位数全组合里
当第1位+第2位的尾数=0
且第1位+第3位的尾数=0
且第1位+第4位的尾数=0
且第1位+第5位的尾数=0
符合上述条件的五位数是00000 19999 28888 37777 46666 55555 64444 73333 82222 91111
将该数值导入D:/数据/001/00001.txt

在五位数全组合里
当第1位+第2位的尾数=0
且第1位+第3位的尾数=0
且第1位+第4位的尾数=0
且第1位+第5位的尾数=1
符合上述条件的五位数是00001 19990 28889 37778 46667 55556 64445 73334 82223 91112
将该数值导入D:/数据/001/00002.txt

以此类推,直至
当第1位+第2位的尾数=9
且第1位+第3位的尾数=9
且第1位+第4位的尾数=9
且第1位+第5位的尾数=9

这是第一组的1万个组合
依次还有209组1万个组合

TOP

察,没明白00000-99999是依据什么得出来的

TOP

本帖最后由 依山居 于 2015-11-7 10:21 编辑

我都没看明白是什么意思就能把代码写出来了,你已经能把代码写出来了。厉害。

TOP

本帖最后由 思想之翼 于 2015-11-8 01:28 编辑

回复 4# terse
感谢!
但不是想要的结果。
简要说明:
一、5位数各位置两两相加取尾数,有10种位置组合:12、13、14、15、23、24、25、34、35、45
二、上述10种位置组合,取不重复4个为一组,有210种组合:
12/13/14/15     12/13/14/23  ....... 24/25/35/45      24/34/35/45      25/34/35/45

三、需要计算的是:
先看第1个组合 12/13/14/15
1+2=0/1+3=0/1+4=0/1+5=0(即0000组合)
1+2=0/1+3=0/1+4=0/1+5=1(即0001组合)
...
1+2=9/1+3=9/1+4=9/1+5=9(即9999组合)
将满足上述0000组合的五位数,写入D:/数据/001/00001.TXT
将满足上述0001组合的五位数,写入D:/数据/001/00002.TXT
...
将满足上述9999组合的五位数,写入D:/数据/001/10000.TXT


第2个组合 12/13/14/23
1+2=0/1+3=0/1+4=0/2+3=0(即0000组合)
1+2=0/1+3=0/1+4=0/2+3=1(即0001组合)
...
1+2=9/1+3=9/1+4=9/2+3=9(即9999组合)
将满足上述0000组合的五位数,写入D:/数据/002/00001.TXT
将满足上述0001组合的五位数,写入D:/数据/002/00002.TXT
...
将满足上述9999组合的五位数,写入D:/数据/002/10000.TXT


以此类推至第210个组合 25/34/35/45
2+5=0/3+4=0/3+5=0/4+5=0(即0000组合)
2+5=0/3+4=0/3+5=0/4+5=1(即0001组合)
...
2+5=9/3+4=9/3+5=9/4+5=9(即9999组合)
将满足上述0000组合的五位数,写入D:/数据/210/00001.TXT
将满足上述0001组合的五位数,写入D:/数据/210/00002.TXT
...
将满足上述9999组合的五位数,写入D:/数据/210/10000.TXT

TOP

回复 3# 思想之翼
已修改 是这个意思吗

TOP

本帖最后由 terse 于 2015-11-7 02:31 编辑
  1. @ECHO OFF&setlocal enabledelayedexpansion
  2. md "D:/数据/002/" 2>nul
  3. for /l %%i in (0,1,8) do set /a _%%i=%%i+1
  4. for /l %%s in (100000,1,199999) do (
  5.     set $n=&set $m=&set str=%%s
  6.     for /l %%i in (1,1,4) do (
  7.         for /l %%j in (!_%%i!,1,5) do (
  8.             set /a "n=(!str:~%%i,1!+!str:~%%j,1!)%%10"
  9.             set /a "m=(!str:~%%i,1!-!str:~%%j,1!)%%10"
  10.             set $n=!$n!!n!
  11.             set $m=!$m!!m:-=!
  12.         )
  13.     )
  14.     for /l %%a in (0,1,6) do (
  15.         for /l %%b in (!_%%a!,1,9) do (
  16.             for /l %%c in (!_%%b!,1,9) do (
  17.                 for /l %%d in (!_%%c!,1,9) do (
  18.                     for %%n in (n m) do (
  19.                         set /a %%n=10!$%%n:~%%a,1!!$%%n:~%%b,1!!$%%n:~%%c,1!!$%%n:~%%d,1!+1
  20.                         if not defined !str!#!%%n! (
  21.                            set !str!#!%%n!=0
  22.                            >> "D:/数据/002/!%%n:~-5!.txt" echo;!str:~1!
  23.                         )
  24.                     )
  25.                 )
  26.             )
  27.         )
  28.     )
  29. )
  30. PAUSE
复制代码

TOP

返回列表