免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: felix0608
打印 上一主题 下一主题

求大神帮写一个去除交集的perl脚本!! [复制链接]

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
11 [报告]
发表于 2014-01-20 19:15 |只看该作者
回复 10# pitonas


    别开玩笑了,楼主不是把数据贴出来了嘛,你去整个代码吧,我是没看懂楼主的意思,SOGA,整不出来呀

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
12 [报告]
发表于 2014-01-20 19:22 |只看该作者
大牛你整个把图上数据扣出来代码嘛{:2_172:}
reyleon 发表于 2014-01-20 12:15
回复 10# pitonas
SOGA

论坛徽章:
0
13 [报告]
发表于 2014-01-20 19:34 |只看该作者
回复 8# xiumu2280
大神!昨天那代码那么强,这还能难倒你?等你的精彩代码(一定要用贴图的方式哦)!

   

论坛徽章:
8
技术图书徽章
日期:2013-09-30 08:51:28技术图书徽章
日期:2013-12-11 09:26:39白羊座
日期:2013-12-27 15:27:13金牛座
日期:2014-01-06 09:13:05天蝎座
日期:2014-01-21 14:23:28酉鸡
日期:2014-05-09 16:51:12卯兔
日期:2014-08-11 16:49:1515-16赛季CBA联赛之八一
日期:2017-08-14 23:24:57
14 [报告]
发表于 2014-01-20 20:26 |只看该作者
本帖最后由 xiumu2280 于 2014-01-21 08:49 编辑
  1. open (IN,"C:\\Users\\Desktop\\Test\\2014_1_14\\Noname5.txt");
  2. open (IN1,"C:\\Users\\Desktop\\Test\\2014_1_14\\Noname3.txt");

  3. my %hash_goal;
  4. map {chomp;push @{$hash_goal{(split)[0]}},((split)[1]..(split)[2])}<IN>;
  5. ##################
  6. map {
  7.         chomp;
  8.         my $line = $_;
  9.         my ($zone,$start,$end) = split /\s+/,$line;
  10.         my %hash_NB;
  11.         @hash_NB{($start..$end)}=1;
  12.         !(%hash_NB ~~ @{$hash_goal{$zone}}) && print "$line\n";
  13. }<IN1>;
复制代码
超级耗内存版本

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
15 [报告]
发表于 2014-01-20 20:51 |只看该作者
看得我都激动了...好厉害的小伙伴们, 这个必须赞一个
{:2_172:}

回复 14# xiumu2280


   

论坛徽章:
0
16 [报告]
发表于 2014-01-20 22:55 |只看该作者
回复 14# xiumu2280
大神,这一句好像有些问题:my ($zone,$start,$end) = split,$line;本人测试提示$line是处于空上下文的,没有作用。
若my ($zone,$start,$end) = (split,$line);这样写,是没有语法错误,不过在本例中$line也是没有赋值给变量,也无任何作用。

   

论坛徽章:
8
技术图书徽章
日期:2013-09-30 08:51:28技术图书徽章
日期:2013-12-11 09:26:39白羊座
日期:2013-12-27 15:27:13金牛座
日期:2014-01-06 09:13:05天蝎座
日期:2014-01-21 14:23:28酉鸡
日期:2014-05-09 16:51:12卯兔
日期:2014-08-11 16:49:1515-16赛季CBA联赛之八一
日期:2017-08-14 23:24:57
17 [报告]
发表于 2014-01-21 08:49 |只看该作者
的确,那个split的写法是错误的···
感谢,大神~{:3_187:} 回复 16# jzp520520


   

论坛徽章:
0
18 [报告]
发表于 2014-01-21 10:57 |只看该作者
顶,求大神帮忙!!

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
19 [报告]
发表于 2014-01-21 15:16 |只看该作者
{:2_177:}头好晕 @@
{:2_172:}小伙伴们, 测试测试?
            # if [18656   18756] [18075   18656] is overlay
            # USE:
            # if ( $r2[$y][0] > $x->[1] ) {
            # elsif ( $r2[$y][1] < $x->[0] ) { next }
            
            # if [18656   18756] [18075   18656] is not overlay
            # USE:
            # if ( $r2[$y][0] >= $x->[1] ) {
            # elsif ( $r2[$y][1] <= $x->[0] ) { next }
  1. #!/usr/bin/perl
  2. open my $one, 'doc1';
  3. open my $two, 'doc2';
  4. my %doc1; map { @_ = split; push @{ $doc1{ shift @_ } }, [@_] } <$one>;
  5. my %doc2; map { @_ = split; push @{ $doc2{ shift @_ } }, [@_] } <$two>;

  6. while ( my ( $s, $r ) = each %doc1 ) {
  7.     next unless $doc2{$s};
  8.     my @r1 = @$r;
  9.     my @r2 = @{ $doc2{$s} };
  10.     my $i  = 0;
  11.     for my $x (@r1) {
  12.         my $print = 1;
  13.         for my $y ( $i .. $#r2 ) {
  14.             if ( $r2[$y][0] >= $x->[1] ) {
  15.                 $i = $y;
  16.                 last;
  17.             }
  18.             elsif ( $r2[$y][1] <= $x->[0] ) { next }
  19.             else                           { $print = 0 }
  20.         }
  21.         print join( "\t", $s, @$x ), "\n" if $print;
  22.     }
  23. }

  24. __DATA__

复制代码

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
20 [报告]
发表于 2014-01-21 15:24 |只看该作者
本帖最后由 pitonas 于 2014-01-21 08:26 编辑

jason680
大神 ! 帮我看看代码, 它是否有问题 ?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP