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

题目的数字太小了。
  1. @echo off
  2. REM 支持天文数字,不限长度,小数也行,已分装为函数,直接呼。
  3. call :MULTIPLICATION %random%×%random%×%random%×%random%×%random%×%random%×%random%×%random%
  4. pause&exit /b
  5. def MULTIPLICATION():
  6. {
  7. :MULTIPLICATION <表达式>
  8. set "expression=%1"
  9. if "!CHECK_ENABLE_DELAYED_EXPANSION!"=="%CHECK_ENABLE_DELAYED_EXPANSION%" (SETLOCAL) else (SETLOCAL ENABLEDELAYEDEXPANSION)
  10. set RESULT=1&set "expression=%expression:×= %"
  11. for %%a in (!expression!) do (
  12. CALL :CALCULATE !RESULT! %%a RESULT
  13. )
  14. echo 计算%1
  15. echo =!RESULT!
  16. ENDLOCAL
  17. GOTO :EOF
  18. }
  19. def CALCULATE():
  20. {
  21. :CALCULATE <被乘数> <乘数> [积]
  22. for /f "tokens=1,2 delims=." %%a in ("%1") do (
  23. set A1=%%a&set A=!A1!%%b
  24. if "%%b"=="" (set PA=0) else (
  25. set A2=%%b
  26. for %%i in (512 256 128 64 32 16 8 4 2 1) do (
  27.     if not "!A2:~%%i!"=="" (
  28. set/a PA+=%%i
  29. set "A2=!A2:~%%i!"
  30. )
  31. )
  32. if "!A2:~1!"=="" (set/a PA+=1)
  33. )
  34. )
  35. for /f "tokens=1,2 delims=." %%a in ("%2") do (
  36. set B1=%%a&set B=!B1!%%b
  37. if "%%b"=="" (set PB=0) else (
  38. set B2=%%b
  39. for %%i in (512 256 128 64 32 16 8 4 2 1) do (
  40.     if not "!B2:~%%i!"=="" (
  41. set/a PB+=%%i
  42. set "B2=!B2:~%%i!"
  43. )
  44. )
  45. if "!B2:~1!"=="" (set/a PB+=1)
  46. )
  47. )
  48. CALL :CUTNUM !A! A NA
  49. CALL :CUTNUM !B! B NB
  50. set/a "N=NA+NB,PO=PA+PB"
  51. for /l %%i in (1 1 !N!) do (
  52. for /l %%j in (1 1 %%i) do (
  53. set/a j=%%i-%%j+1
  54. if defined A[%%j] (
  55. if defined B[!j!] (
  56. set/a sum=A[%%j]*B[!j!]+sum
  57. )
  58. )
  59. )
  60. set/a s=sum+1000
  61. set sum=!sum:~0,-3!
  62. set pul=!s:~-3!!pul!
  63. )
  64. if !PO! equ 0 (
  65. for /l %%i in (1 1 10) do (
  66. if "!pul:~0,1!"=="0" (
  67. set pul=!pul:~1!
  68. )
  69. )
  70. set "%3=!pul!"
  71. ) else (
  72. set pre=!pul:~0,-%PO%!
  73. for /l %%i in (1 1 20) do (
  74. if "!pre:~0,1!"=="0" (
  75. set pre=!pre:~1!
  76. )
  77. )
  78. if not defined pre (set pre=0)
  79. set "%3=!pre!.!pul:~-%PO%!
  80. )
  81. for /l %%i in (1 1 !N!) do (set "A[%%i]="&set "B[%%i]=")&set "pul="&set/a "PA=0,PB=0,PO=0"
  82. GOTO :EOF
  83. }
  84. def CUTNUM():
  85. {
  86. :CUTNUM <待切分数> <数据类型> [切分组数]
  87. set num=%1
  88. if "!num:~-3!"=="!num:~-4!" (
  89. set %2[1]=!num!
  90. set %3=1
  91. GOTO :EOF
  92. )
  93. for /l %%i in (1 1 365) do (
  94. if "!num:~0,-3!"=="" (
  95. set/a %2[%%i]=!num!
  96. set %3=%%i
  97. GOTO :EOF
  98. )
  99. set/a %2[%%i]=1!num:~-3!-1000
  100. set num=!num:~0,-3%!
  101. )
  102. GOTO :EOF
  103. }
复制代码
5

评分人数

TOP

回复 7# 523066680
我只是学徒,在看到你的动画时第一反应就是完全惊呆了,我那时只会echo,后来就不断的研究你的作品,学到好多巧妙的思维。

TOP

本帖最后由 happy886rr 于 2016-11-2 21:10 编辑

回复 9# 523066680

我打算下一个目标就是去学perl。你的很多帖子都是很好的资料,这个论坛的好处就是非常通俗易懂的启蒙教程和许多充满智慧的创新思维。
我以前显示一个字符串只会用echo ,后来在论坛学到set/p=字符串<nul也能用来显示 ,因此思维就得到了扩充。这个论坛的最大作用就是思维的交流,这里的代码有情有义,而非其他网站的那种生硬的语法教学。

TOP

回复 12# 523066680
重复独立事件,随机本真性已被破坏。取余就会使其趋于古典概型。

TOP

本帖最后由 happy886rr 于 2016-11-8 23:32 编辑

回复 34# CrLf
可能大师没注意到,我以前发过了,沉下去了。我正在用C语言去实现cmd,到时候就不用微软的cmd了,用自己写的去解释批处理http://www.bathome.net/thread-42198-1-1.html,这个只完成了最基本的,我只要有时间,用不了多久,会实现解释65%的批处理代码,全部用内置函数解释,wmic可能没法解释,只能exec了。我正在写个虚拟机以运行自己的虚拟指令集,从而实现cmd的 编译。

TOP

本帖最后由 happy886rr 于 2016-11-9 00:00 编辑

回复 37# codegay
哈哈,兄记性真好。我打算把python 的一些特性也加进去,搞个杂交水稻吧。还要写个新的SQLM数据库,用的B树,还有“汉本”一种新的脚本。要写的太多了,正在学汇编,打算开发一种类似C语言一样高效的低级程序语言。

TOP

回复 39# aa77dd@163.com
兄的头像怎么换了?

TOP

本帖最后由 happy886rr 于 2016-11-9 09:25 编辑

回复 39# aa77dd@163.com
只能在批处理之家挠挠痒痒,业余玩玩,不亦乐乎。我也发现C语言和汇编是速度最快的,在同样的算法下,C比C++都快2倍,比python快十多倍。目前各类C编译器优化十分到位,我用汇编也只能跟C语言速度持平。

TOP

回复 42# aa77dd@163.com
这不马上过年了,码几幅对联。弄个批处理写春联。

TOP

返回列表