登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

云之南

风声,雨声,读书声,声声入耳;家事,国事,天下事,事事关心

 
 
 

日志

 
 
关于我

专业背景:计算机科学 研究方向与兴趣: JavaEE-Web软件开发, 生物信息学, 数据挖掘与机器学习, 智能信息系统 目前工作: 基因组, 转录组, NGS高通量数据分析, 生物数据挖掘, 植物系统发育和比较进化基因组学

perl对连续数据的处理  

2011-05-10 19:34:27|  分类: perl&bioperl |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://blog.sina.com.cn/s/blog_4af3f0d20100g73p.html

编个程序,实现一下功能:连续数组(相差为1)只输出首尾两个
例如:
1
2
3
7
8
9
输出
1-3
7-9
记得以前论坛有过这个程序,忘记了,现在也没找到
说明,上面只是一个例子,说明问题用的,
答案1:
# cat sort.pl
use strict;
my @x=(1,2,3,7,8,9,13,17,18,19,22);
my @tmp;
for (my $i=0;$i<=$#x;$i++) {
   push @tmp,$x[$i];
   if ($x[$i]+1 != $x[$i+1]) {
      my $re=join "-",$tmp[0],$tmp[-1];
      print $re,"\n"; @tmp=();
   }
}
# perl sort.pl
1-3
7-9
13-13
17-19
22-22
答案2:
#!/usr/bin/perl
#######  前提:数据按照从小到大或从大到小的顺序排好 #########
#######                                     #########
$first_value=1;
@a=($first_value);
while(<DATA>){
chomp;
          if( $b+1==$_||$b-1==$_){
                      
                        push @a,$_;
                        $b=$_;
                        }
           else{            
                print "$a[0]\t$a[-1]\n";
                $b=$_;
               
                @a=();
                push @a,$b;
               
               }
        print "$a[0]\t$a[-1]\n" if eof;
}
__DATA__
2
3
4
5
6
7
9
10
11
15
16
17
24
23
22
21
5
  评论这张
 
阅读(914)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018