免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3707 | 回复: 10
打印 上一主题 下一主题

[文本处理] 会排列组合代码的大神进来下,说句话也行,感谢! [复制链接]

论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-01-20 16:43 |只看该作者 |倒序浏览


犹豫了很长时间,不知道该不该来求助,也不知道有没有结果。想了下,反正菜菜鸟也不怕丢人。张张口试试下吧,说不准真有这样的大神出现。
感谢大神们说几句话,等待中

求助主题:
一、想用纯小写字母(全部26个),生成一个8位的序列
     aaaaaaab
     bbbbbbbc
     cccccccd
     eeeeeeef

     ....

     结果是,这样生成的数值太大了,共生成208827064576个,大小约为1.9TB,硬盘放不下

     我的求助:能不能给个代码,根据要求只生成其中的一部分?(这样数值小,硬盘能放下)
     要求: 或1、只生成8位不重复字母的行?例如   abcdefgh      ijklmnop    ....
              或2、可以生成8位中只允许其中一个字母,在任意位置,重复一次的行    例如  aacdefg     acadefgh     abcadefg    ....

二、与上面同样的道理,要求也一样,只是想用全部小写、大写字母和数字,生成8位的序列

     如果全部的话,共生成218340105584896个,大小约为1.94PB。  呵呵,吓死人了

      Aa4cdefg

      ...



等待大神吧,看看有没有奇迹出现




辛苦了大神们,感谢!











论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [报告]
发表于 2016-01-20 21:04 |只看该作者
本帖最后由 jason680 于 2016-01-20 23:05 编辑

回复 1# bmne

Would you let's know what you want?
Did you want to try the wifi password? (usually it is 8 word/charactor)

>> ...想用纯小写字母(全部26个),生成一个8位的序列
>> ...结果是,这样生成的数值太大了,共生成208827064576个,大小约为1.9TB,硬盘放不下

$ echo 52^8 | bc
53459728531456
$ echo 26^8 | bc
208827064576

>>...只生成8位不重复字母的行?例如   abcdefgh      ijklmnop    ....
$ echo 26*25*24*23*22*21*20*19 | bc
62990928000

二、与上面同样的道理,要求也一样,只是想用全部小写、大写字母和数字,生成8位的序列
echo     如果全部的话,共生成218340105584896个,大小约为1.94PB。  呵呵,吓死人了

$ echo "(26+26+10)^8" | bc
218340105584896
$ echo "(26+26+20)^8" | bc
722204136308736


   

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
3 [报告]
发表于 2016-01-20 22:59 |只看该作者
本帖最后由 Herowinter 于 2016-01-20 23:08 编辑

回复 1# bmne

下面的代码会生成[a-z]仅出现一次的8位字符排列,你可以把str改成想要的字符集,比如允许
a出现2次,就放2个a, 把num改成你想要生成的数目。这个算法不能保证生成的20个8位字符串
肯定不重复。

  1. echo|awk 'BEGIN{char_set="abcdefghijklmnopqrstuvwxyz";num=20;srand()} {for(i=1;i<=num;i++){str=char_set;s="";for(j=1;j<=8;j++){r=int(100*rand())%length(str)+1;x=substr(str,r,1);s=s""x;sub(x,"",str)}print i": "s}}'
  2. 1: ksyhmocj
  3. 2: lwxmjgrb
  4. 3: iqdeukwb
  5. 4: yirqfptu
  6. 5: bqctuxeo
  7. 6: osrapbfg
  8. 7: fusekcqa
  9. 8: ukxdgbth
  10. 9: nmsadirw
  11. 10: jguaitzf
  12. 11: tahefyzl
  13. 12: qhwpfaut
  14. 13: cgyrnzqk
  15. 14: kfclxdgp
  16. 15: rhpuyjkv
  17. 16: uqpjlenf
  18. 17: ypjlebwg
  19. 18: ibeortxm
  20. 19: eihpbxgq
  21. 20: rpfkwolq
复制代码

论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
4 [报告]
发表于 2016-01-21 08:02 |只看该作者
本帖最后由 bmne 于 2016-01-21 09:22 编辑

没想到真有大神来,感谢


我提点过分要求(主要目的是降低组合数据的大小,没办法,只能这样选):
1、根据心目中的组合要求,先判断组合后的数据大小而后组合。比如,我要求8位不重复字母,组合后大小是3GB左右,假如选开头第一位字母选 a或b或c或d 正好能满足, 其它就不能选了,再选就超过大小了
2、如上面同样道理,根据组合后的大小,先先期判断一下,再组合
    比如,我组合一个只允许其中一个字母在里面任意位置重复2次,要求组合后的大小是5GB

3、总之,大神们比我明白。肯定能超过我说的想法

4、根据我的体会,这样的组合数据,组合后总大小最好别超过5GB,尽量控制在2-3GB,最理想在1GB左右。




辛苦了!请有时间的大神浪费你的脑细胞吧,添麻烦了!






论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
5 [报告]
发表于 2016-01-21 09:37 |只看该作者


说个题外话,别介意,如果我说的不好,就当没说,没看见

如果有大神,能做个这样的软件。收辛苦费的话。可以“消息”联系

绝无恶意。谢谢理解


论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
6 [报告]
发表于 2016-01-25 14:53 |只看该作者



总共顶三次。看看我的运气怎样,大神都放假了?

这是第一次顶


论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
7 [报告]
发表于 2016-01-29 14:54 |只看该作者


顶第二次


论坛徽章:
29
程序设计版块每日发帖之星
日期:2016-02-29 06:20:0015-16赛季CBA联赛之天津
日期:2016-08-10 10:33:1115-16赛季CBA联赛之深圳
日期:2016-08-17 15:07:2015-16赛季CBA联赛之佛山
日期:2016-11-07 11:33:5015-16赛季CBA联赛之广夏
日期:2016-11-15 09:13:31CU十四周年纪念徽章
日期:2016-11-24 14:12:25极客徽章
日期:2016-12-07 14:03:4015-16赛季CBA联赛之深圳
日期:2016-12-07 17:15:2715-16赛季CBA联赛之北京
日期:2016-12-22 09:30:0115-16赛季CBA联赛之深圳
日期:2016-12-22 10:49:2115-16赛季CBA联赛之山西
日期:2017-02-10 09:05:3215-16赛季CBA联赛之同曦
日期:2017-02-27 14:19:08
8 [报告]
发表于 2016-01-29 16:04 |只看该作者
回复 4# bmne


    我觉得你可以先根据你需求文件的大小和允许几个重复字符先算出多少个字符能符合要求, 然后对这些字符做个全排列应该就可以了

论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
9 [报告]
发表于 2016-01-29 16:15 |只看该作者
回复 8# elu_ligao


谢谢大神指点

请方便时,空闲时间,浪费你几个脑细胞,真心希望能给出几个代码。



   

论坛徽章:
31
程序设计版块每日发帖之星
日期:2016-02-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-20 06:20:00程序设计版块每日发帖之星
日期:2016-07-26 06:20:00每日论坛发贴之星
日期:2016-07-26 06:20:00程序设计版块每日发帖之星
日期:2016-07-27 06:20:00每日论坛发贴之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-29 06:20:00程序设计版块每日发帖之星
日期:2016-08-02 06:20:00程序设计版块每日发帖之星
日期:2016-08-06 06:20:00程序设计版块每日发帖之星
日期:2016-08-08 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00
10 [报告]
发表于 2016-02-03 20:22 |只看该作者


顶最后一次。没大神帮助就放弃了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP