免费注册 查看新帖 |

Chinaunix

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

求助:请大家帮忙写段N选6排列组合的perl代码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-23 10:54 |只看该作者 |倒序浏览
本帖最后由 apkood 于 2013-01-23 10:59 编辑

想请大家帮忙写段N选6排列组合的perl代码,具体文件与要求如下:
     这是文档a.txt的内容,有很多行这里只取了10行作样式,每一行大约是12-28个自然数,需要将毎一行的数按6个为一组进行排列组合,将其结果保存为b.txt,其中关健是毎一行的组合结果要达到b.txt的样式,也就是将组合结果连在一起,希望大家在百忙中抽些时间帮帮我,谢谢大家!

a.txt文档样式
01 06 07 08 09 10 12 15 16 17 21 22 23 25 26 27 28 29 30         
03 04 05 06 08 09 11 12 16 18 22 23 24 25 29 30 31 32      
01 02 03 04 05 08 09 13 14 17 20 21 22 25 26 28 29 30 31 32 33     
02 03 05 07 11 15 18 20 21 22 24 28 30 33           
01 06 07 08 09 10 12 15 16 17 21 22 25 27 29 30         
01 02 03 07 09 10 11 12 14 19 22 24 29 30 31 32 33        
01 02 03 04 05 06 07 12 14 15 20 21 25 26 27 29 31        
01 03 05 06 09 12 14 16 17 18 21 22 23 29 31 33         
01 03 08 10 12 14 15 16 17 18 25 29 30 31 32 33         

b.txt文档样式  (下面这个结果是用vba运行岀来的,受excel行数限制处理不了)

01 06 07 08 09 10   (a.txt第一行n迭6排列组合的开始行)
·
·这里的组合省略了
·
25 26 27 28 29 30   (a.txt第一行n迭6排列组合的结束行)
03 04 05 06 08 09   (a.txt第二行n迭6排列组合的开始行)
·
·这里的组合省略了
·
24 25 29 30 31 32   (a.txt第二行n迭6排列组合的结束行)
01 02 03 04 05 08   (a.txt第三行n迭6排列组合的开始行)
·
·这里的组合省略了
·
28 29 30 31 32 33   (a.txt第三行n迭6排列组合的结束行)
02 03 05 07 11 15   (a.txt第四行n迭6排列组合的开始行)
·
下面的组合也省略了
·
·
·

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
2 [报告]
发表于 2013-01-23 11:30 |只看该作者
本帖最后由 mcshell 于 2013-01-23 12:55 编辑

跳过这里{:3_194:} 前面误解题意了

论坛徽章:
0
3 [报告]
发表于 2013-01-23 11:35 |只看该作者
回复 2# mcshell

不懂这个匹配啊。。
这个应该不能随机?


   

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
4 [报告]
发表于 2013-01-23 11:43 |只看该作者
如下:
  1. #!/usr/bin/perl
  2. use 5.016;

  3. open my $fa, '<', 'a.txt';
  4. open my $fb, '>', 'b.txt';

  5. while (<$fa>) {
  6.     say $fb "@$_" for cb( 6, split );
  7. }

  8. sub cb {
  9.     my ( $n, $h, @t ) = @_;
  10.     $n ? $h ? undef : return : return [];
  11.     map( { [ $h, @$_ ] } cb( $n - 1, @t ) ), cb( $n, @t );
  12. }
复制代码

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
5 [报告]
发表于 2013-01-23 12:53 |只看该作者
如果排列组合的话。。。{:3_190:}
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use Math::Combinatorics;
  5. open FA,'a.txt' or die "$!";
  6. open FB,'>b.txt' or die "$!";
  7. while(<FA>){
  8.    my @arr = split;
  9. print FB join( "\n", map { join( " ", @{$_} ) } combine( 6, @arr ) ), "\n";
  10. }
  11. close FA;
  12. close FB;
复制代码

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-06-23 06:20:00
6 [报告]
发表于 2013-01-23 13:19 |只看该作者
#!/usr/bin/perl
use strict;
use warnings;
open TXT,">test111.txt" or die "$!\n";
while (<DATA>){
my $str=/((\d\d\s){5}\d\d).*/;
$str=$1;
print TXT "$str\n";
}
close TXT;













__DATA__
01 06 07 08 09 10 12 15 16 17 21 22 23 25 26 27 28 29 30         
03 04 05 06 08 09 11 12 16 18 22 23 24 25 29 30 31 32      
01 02 03 04 05 08 09 13 14 17 20 21 22 25 26 28 29 30 31 32 33     
02 03 05 07 11 15 18 20 21 22 24 28 30 33           
01 06 07 08 09 10 12 15 16 17 21 22 25 27 29 30         
01 02 03 07 09 10 11 12 14 19 22 24 29 30 31 32 33        
01 02 03 04 05 06 07 12 14 15 20 21 25 26 27 29 31        
01 03 05 06 09 12 14 16 17 18 21 22 23 29 31 33         
01 03 08 10 12 14 15 16 17 18 25 29 30 31 32 33

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
7 [报告]
发表于 2013-01-23 13:42 |只看该作者
本帖最后由 zhlong8 于 2013-01-23 13:44 编辑

你算过数量级没有,一行28项仅组合就 37万组,排列两亿多

论坛徽章:
0
8 [报告]
发表于 2013-01-23 14:14 |只看该作者
本帖最后由 wsxedcer 于 2013-01-23 14:16 编辑

回复 7# zhlong8


    我艹,跳过吧

论坛徽章:
0
9 [报告]
发表于 2013-01-23 14:35 |只看该作者
本帖最后由 apkood 于 2013-01-23 15:29 编辑

谢谢大家的回复!我用的是windows xp下perl -v5.8.8运行出错,不知是什么原因?


[attachimg]636358[/attachimg     





  


诚请各位大侠指点一下,谢谢!

pt.JPG (26.58 KB, 下载次数: 2)

pt.JPG

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
10 [报告]
发表于 2013-01-23 15:01 |只看该作者
{:3_199:}貌似看起来又是彩票
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP