找回密码
 加入
搜索
查看: 5338|回复: 11

[效率算法] 求个字典生成器的算法

  [复制链接]
发表于 2011-7-18 10:24:49 | 显示全部楼层 |阅读模式
求个字典生成器的算法,目的用于批量成生指定范围的字符串,不是随机生成,是按顺序来生成的。我想达到的效果是这样
a
b
c
...
z
o
1
2
...
9

aa
ab
ac
...
a9
ba
bb
bc
...
b9
...
...
99999999


请各位大牛支招,谢谢咯
发表于 2011-7-18 10:40:47 | 显示全部楼层
#include <array.au3>
$a="abcdefghijklmnopqrstuvwxyz1234567890"
$b=StringSplit($a,"",2)
$c=_ArrayCombinations($b,2);2参加组合的元素个数
_ArrayDisplay($c)
以此类推,
不建议这样生成字典。
au3最多支持16 777 216个数组元素。
 楼主| 发表于 2011-7-18 13:45:33 | 显示全部楼层
#include
$a="abcdefghijklmnopqrstuvwxyz1234567890"
$b=StringSplit($a,"",2)
$c=_ArrayCombinations ...
pcbar 发表于 2011-7-18 10:40



    谢谢超版指点!
如果不这样生成字典,那有什么好的生成算法推荐呢?
发表于 2011-7-18 14:31:04 | 显示全部楼层
在au3里用大数组会非常慢的.

其实关键是你这样做的目的是啥?
一般没必要把它们一个个产生出来存着
 楼主| 发表于 2011-7-18 15:22:09 | 显示全部楼层
在au3里用大数组会非常慢的.

其实关键是你这样做的目的是啥?
一般没必要把它们一个个产生出来存着
happytc 发表于 2011-7-18 14:31



是这样的,我公司要我们在一个商务平台上找电话号码资料,手动复制粘贴那速度肯定是很慢的嘛,所以想用au3写个自动获取的程序。我发现那个商务平台上商家的主页都是*.abc.com(*可以是数字、字母单个或组合)这样的形式的,所以才想写段类似字典生成器功能的代码来自动生成这其中的*。希望大牛支招,谢谢
发表于 2011-7-18 16:22:01 | 显示全部楼层
Random
即可...........
发表于 2011-7-18 23:28:51 | 显示全部楼层
回复 5# xiaozui


    原来是这样,所以把目的说出来更重要。
根本不需要你的标题说的那样的方法,的确只需要产生随机数就够了。


Do
        $rNum = Random(48, 122, 1)
        If ($rNum > 57 And $rNum < 65) Or ($rNum > 90 And $rNum < 97) Or $rNum > 122 Then
                ContinueLoop
        Else
                $str = Chr($rNum)
                MsgBox(0, 0, $str)
        EndIf 
Until False
 楼主| 发表于 2011-7-19 12:40:05 | 显示全部楼层
回复  xiaozui


    原来是这样,所以把目的说出来更重要。
根本不需要你的标题说的那样的方法,的确 ...
happytc 发表于 2011-7-18 23:28



    谢谢,不过,随机的话,会有重复的。
发表于 2011-7-19 13:23:33 | 显示全部楼层
谢谢,不过,随机的话,会有重复的。
xiaozui 发表于 2011-7-19 12:40


这又涉及到你的更进一步目的:代码来自动生成这其中的*
生成这个又是干什么用呢?
发表于 2011-7-19 16:14:49 | 显示全部楼层
是这样的,我公司要我们在一个商务平台上找电话号码资料,手动复制粘贴那速度肯定是很慢的嘛,所以想 ...
xiaozui 发表于 2011-7-18 15:22

是收集电话号码,然后发垃圾短信的那种?
以下代码效率极低.慎用
#include <array.au3>

$result=_DIC_Word(3)
_ArrayDisplay($result)

Func _DIC_Word($number);层级,如3则AAA
        $a="abcdefghijklmnopqrstuvwxyz1234567890"
        $b=StringSplit($a,"",2)
        $c=_ArrayCombinations($b,$number)
        Local $count=1,$k=0
        For $i=$number to 1 Step -1
                $count*=$i
        Next
        
        Local $array[$count*($c[0]-1)]

        for $i=1 to $c[0]-1
                $temp=StringSplit($c[$i],"",2)
                $temp_array=_ArrayPermute($temp)
                for $q=1 to $temp_array[0]
                        $array[$k]=$temp_array[$q]
                        $k+=1
                Next
        Next
        Return $array
EndFunc
 楼主| 发表于 2011-7-19 19:40:54 | 显示全部楼层
这又涉及到你的更进一步目的:代码来自动生成这其中的*
生成这个又是干什么用呢?
happytc 发表于 2011-7-19 13:23



    *.abc.com是某平台商家主页的地址,假设*为aaa的话,那么就抓取aaa.abc.com这个主页的商家信息。如果*为随机生成的话,那么就有可能重复抓取一个商家主页的信息了。
 楼主| 发表于 2011-7-19 21:09:53 | 显示全部楼层
是收集电话号码,然后发垃圾短信的那种?
以下代码效率极低.慎用
3mile 发表于 2011-7-19 16:14



   
层级为大于4就会出现这种情况...

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-2 16:40 , Processed in 0.082041 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表