查找顺序排列

 一个文件有N列,其中某一列(第一列)为顺序数字,现在的任务是查找这些顺序数字是否为完全顺序,即上一个和下一个的间距为1.

文件例子:

ChrB01  1       -0.000000       -0.000000       -0.000000       -0.000000       0.000000        -0.000000       -0.000000       -0.000000
ChrB01  2       -0.000000       -0.000000       -0.000000       -0.000000       0.000000        -0.000000       -0.000000       -0.000000
ChrB01  3       0.000000        -0.051293       -0.105360       -0.162518       -0.223142       -0.287680       -0.356673       -0.430780
ChrB01  4       0.000000        -0.051292       -0.105359       -0.162516       -0.223140       -0.287677       -0.356668       -0.430774
ChrB01  5       0.000000        -0.051293       -0.105360       -0.162518       -0.223143       -0.287681       -0.356673       -0.430781
ChrB01  6       0.000000        -0.105360       -0.216586       -0.334369       -0.459531       -0.593062       -0.736163       -0.890313
ChrB01  7       0.000000        -0.105359       -0.216583       -0.334365       -0.459526       -0.593055       -0.736153       -0.890301
ChrB01  8       0.000000        -0.105360       -0.216585       -0.334368       -0.459530       -0.593061       -0.736161       -0.890310
ChrB01  9       0.000000        -0.105359       -0.216583       -0.334365       -0.459526       -0.593055       -0.736153       -0.890301
ChrB01  10      0.000000        -0.133530       -0.273742       -0.421377       -0.577311       -0.742590       -0.918479       -1.106529
ChrB01  11      0.000000        -0.192370       -0.394990       -0.609059       -0.836002       -1.077541       -1.335773       -1.613299
ChrB01  12      0.000000        -0.133531       -0.273743       -0.421378       -0.577312       -0.742591       -0.918481       -1.106532
ChrB01  13      0.000000        -0.133531       -0.273744       -0.421379       -0.577314       -0.742593       -0.918483       -1.106535
ChrB01  14      0.000000        -0.192372       -0.394993       -0.609063       -0.836008       -1.077549       -1.335783       -1.613312
ChrB01  15      0.000000        -0.287681       -0.590684       -0.910821       -1.250260       -1.611629       -1.998155       -2.413876
ChrB01  16      0.000000        -0.287682       -0.590685       -0.910822       -1.250261       -1.611630       -1.998157       -2.413878
ChrB01  17      0.000000        -0.287681       -0.590684       -0.910821       -1.250260       -1.611628       -1.998155       -2.413875
ChrB01  18      0.000000        -0.411697       -0.846341       -1.306732       -1.796234       -2.318945       -2.879936       -3.485597
ChrB01  19      0.000000        -0.338951       -0.695731       -1.072396       -1.471392       -1.895669       -2.348829       -2.835347
ChrB01  20      0.000000        -0.430739       -0.886223       -1.369508       -1.884260       -2.434940       -3.027049       -3.667500
ChrB01  21      0.000000        -0.440431       -0.906849       -1.402554       -1.931526       -2.498628       -3.109894       -3.772944
ChrB01  22      0.000000        -0.440438       -0.906863       -1.402575       -1.931555       -2.498667       -3.109944       -3.773007
ChrB01  23      0.000000        -0.500433       -1.031135       -1.596125       -2.200309       -2.849764       -3.552163       -4.317410
ChrB01  24      0.000000        -0.526562       -1.086407       -1.684109       -2.325273       -3.016877       -3.767776       -4.589452
ChrB01  25      0.000000        -0.526565       -1.086415       -1.684122       -2.325291       -3.016903       -3.767810       -4.589497

perl语言代码:

#!/usr/bin/perl

use strict;
use warnings;

my $infile = shift;
open AA, $infile or die $!;

my $lastword;
my $str;

while ($str = <AA>){
        my @t = split /\s+/, $str;
        if($lastword eq ""){
                $lastword = $t[0];
        }else{
                print "$lastword\t$t[0]\n" if($t[0] - $lastword > 1);
                $lastword = $t[0];
        }
}

输出结果

87      89
816     842
856     858
859     861
865     867
872     874
883     885
892     894
1015    1235
1869    1871
1916    1918
1941    1943
4668    4670
5609    5611
5623    5625
5846    5848
5975    5977
5980    5983
5990    5992
6081    6083
6118    6121
6122    6125

while()中的算法是很经典的,这个感谢我同事ZYL,在他的指导下弄的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值