[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
66666
  1. adad       66666 + 0     0.0/min
  2. vic3       54761 + 0     0.0/min
  3. coadsa       839 + 0     0.0/min
  4. llsd         139 + 0     0.0/min
  5. sfwfssf        0 + 0     0.0/min
复制代码

TOP

本帖最后由 523066680 于 2017-8-10 21:56 编辑

回复 8# happy886rr

一、
    我还在折腾那个树的生成,但是遇到一些问题,
方案和百科中的 “反馈个数指标” 方案类似,但是平均猜数次数和里面的统计结果不同,懵逼了,还在排查。
  1. times: 26991, rate: 5.355357
  2. $times_elements = {
  3.   '1' => 1,
  4.   '5' => 1993,
  5.   '8' => 12,
  6.   '6' => 1879,
  7.   '7' => 390,
  8.   '3' => 109,
  9.   '2' => 13,
  10.   '4' => 643
  11. };
复制代码
百度统计的是 5.308,每种回合数的统计也不一样

=================================
二、
如果不使用结构树,每次都遍历筛选,哪怕是索引操作,消耗也蛮大的,我写的C,测完5040种情况,去掉printf, 需要2.8秒。

=================================
三、
同样是筛选法,同样是5040种情况去测试,以不同的起点开始,平均回合数是不一样的。
0123 -> 5.560317
6789 -> 5.593254
不过,这大概和筛选数组后选取不同起点的区别类似。比如选择筛选后的最后一个、第一个排列,结果是不一样的。

TOP

本帖最后由 523066680 于 2017-8-11 19:19 编辑

批处理的话可以用这种方式(借wget 或者curl)获取返回值
  1. wget -O res.txt "http://www.codetiger.win/extra/API.php?username=***&password=***&number=1234&send=answer"
复制代码
返回示例:res.txt
{"code":150,"A":0,"B":1,"count":141878,"tokens":"6257936998656230"}

搜索树也可以用类似哈希的方式,事先初始化一系列变量,
TREE[0123][01]=0124
TREE[ORDER1][AB1][ORDER2][AB2]=...

这样的话处理过程就像是查表法。但是终究无力再写批处理,罢了。

TOP

最后手痒还是写了,像这样:

struct.bat
  1. @echo off
  2. set tree=0123
  3. set tree[0123][04]=1032
  4. set tree[0123][04][1032][04]=2301
  5. set tree[0123][04][1032][04][2301][22]=2310
  6. set tree[0123][04][1032][04][2301][22][2310][04]=3201
  7. set tree[0123][04][1032][04][2301][04]=3210
  8. set tree[0123][04][1032][22]=1230
  9. set tree[0123][04][1032][22][1230][13]=1302
  10. set tree[0123][04][1032][22][1230][13][1302][04]=2031
  11. set tree[0123][04][1032][22][1230][04]=3012
  12. set tree[0123][21]=0134
复制代码
批处理调用 struct.bat 为变量赋值。借 wget 向网站 post 并获取反馈信息。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. echo Tree building ...
  4. call struct.bat
  5. echo Begin ...
  6. :AGAIN
  7.     set guess=0123
  8.     set varname=tree
  9.     set prev=0
  10. :WHILE
  11.     call :post %guess%
  12.     echo %guess% - %AB%, %tokens%
  13.     if "%AB%" == "40" (
  14.         echo "Success"
  15.         goto :AGAIN
  16.     )
  17.     if not "%prev%" == "0" (
  18.         if not "%prev%" == "%tokens%" (
  19.             echo "tokens changed";
  20.             goto :AGAIN
  21.         )
  22.     )
  23.     set varname=%varname%[%guess%][%AB%]
  24.     set guess=!%varname%!
  25.     set prev=%tokens%
  26. goto WHILE
  27. :post
  28. wget --quiet -O res.txt "http://www.codetiger.win/extra/API.php?username=BatchScript&password=batchscript&number=%1&send=answer" 2>nul
  29. for /f "tokens=4,6,10 delims=:,}" %%a in (res.txt) do (
  30.     set AB=%%a%%b
  31.     set tokens=%%c
  32. )
  33. goto :eof
复制代码
猜题速度(很慢,但是感觉好玩)
  1. adad       193791 + 0     0.0/min
  2. vic3       142669 + 0     0.0/min
  3. coadsa       850 + 0     0.0/min
  4. BatchScript   752 + 55    109.6/min
  5. llsd         139 + 0     0.0/min
  6. s**sdf      75 + 0     0.0/min
  7. sfwfssf        0 + 0     0.0/min
复制代码
完整的 struct.bat 和 猜数字批处理,已上传附件:
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
1

评分人数

TOP

本帖最后由 523066680 于 2017-8-23 12:04 编辑

本着坚持不懈的精神,终于把平均指标也跑出来了……
  1. Times: 26551, average: 5.268056
  2. 1, 1
  3. 2, 4
  4. 3, 59
  5. 4, 574
  6. 5, 2430
  7. 6, 1885
  8. 7, 87
复制代码
1

评分人数

TOP

返回列表