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

Puriney's Notes

Puriney=purine+Y, my Wonderland

 
 
 

日志

 
 

[QWERT] Locate non-zero numbers' start and length out from a string of numbers  

2012-10-20 23:32:29|  分类: QWERT |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Input is a string of numbers, like: 

000111001230015

The output should list all the start and length of the non-zero numbers, like the BED12 format's column 11 and 12. 

start1,start2,start3,  length1,length2,length3


numbers_code.pl
my $nums = shift;
my $output = &cluster($nums);
print $output . "\n";
sub cluster{
   my $nums = $_[0];
   my @nums = (split //,$nums);
   my $indicator = 0;
   my $len = 0;
   my $start= 0;
   my $lens = '';
   my $starts= '';
   foreach my $n (0..@nums-1){
       if ($nums[$n]>0){
           $len++;
               if ($indicator==0){
                   $start = $n;
                   $indicator =1;
               }
               if ($n == @nums-1){
                   $starts = $starts . $start . ",";
                   $lens = $lens . $len . ",";

               }
       }

       elsif ( $nums[$n]<=0 ) {
           if ( $indicator==1) {
               $starts = $starts  . $start . ",";
               $lens = $lens . $len . ",";
               $len = 0;
               $indicator =0;
           }
       }
   }
   return ($starts . "\t" . $lens );
}

The output will be: 

3,8,13, 3,3,2,


  评论这张
 
阅读(465)| 评论(1)
推荐 转载

历史上的今天

评论

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

页脚

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