[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] 批处理如何高效定义大量变量?

1,变量名形式为“#X-Y”,X、Y都是分别从1到20的数字,总计400种组合
2,变量值为 abcdefghi ... z 中任意一个字母
3,每个字母都要使用过
4,每个字母的使用次数都必须是偶数
5,字母分布必须为随机

代码1:快速设置这400个变量,总时间最好在0.5秒内
代码2:假设这400个变量中有一部分已经被删除,对剩余的变量重新布置,要求变量名和变量值不变,但要重新对应,总时间最好在0.5秒内

0.5秒的要求实在太苛刻了,在我机子上怎么都是接近 1秒
:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "var= abcdefghijklmnopqrstuvwxyz"
  3. set "jj=."
  4. set /a mm=26,max=0,hh=14
  5. for /l %%a in (1 1 20) do (
  6.    for /l %%b in (1 1 20) do (
  7.       if !mm! equ 0 set mm=1
  8.       set /a ww=!random!%%mm+1
  9.       for %%i in (!ww!) do set ss=!var:~%%i,1!
  10.       set #%%a-%%b=!ss!
  11.       set /a !jj!!ss!+=1
  12.       for %%i in (!jj!!ss!) do set xx=!%%i!
  13.       if !xx! equ !hh! (
  14.          for %%i in (!ss!) do set var=!var:%%i=!
  15.          set /a mm-=1
  16.        )
  17.       if not defined $!ss! (
  18.          set $!ss!=a
  19.          set /a max+=1
  20.          if !max! leq 18 set num=!num!!ss!
  21.        )
  22.       if "!var!"==" " (
  23.          set var= !num!
  24.          set "jj=@"
  25.          set /a mm=18,hh=2
  26.        )
  27.     )
  28. )
  29. for /f "tokens=1-2 delims==" %%a in ('set #') do (
  30.    set /a str+=1
  31.    echo %%a=%%b
  32.    set /a tot.%%b+=1
  33. )
  34. echo;&echo 共 !str! 个变量
  35. echo;
  36. set /p=按回车键检验值是否全是偶数&echo;
  37. set /a xuh=100
  38. for /f "tokens=2 delims=." %%a in ('set tot.') do (
  39.    set /a xuh+=1
  40.    echo !xuh:~-2!    %%a
  41. )
  42. echo;&pause
复制代码
技术问题请到论坛发帖求助!

TOP

返回列表