查找顺序排列

来源:互联网 发布:淘宝客服聊天记录恢复 编辑:程序博客网 时间:2024/04/28 13:48

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

文件例子:

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

perl语言代码:

#!/usr/bin/perluse 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      89816     842856     858859     861865     867872     874883     885892     8941015    12351869    18711916    19181941    19434668    46705609    56115623    56255846    58485975    59775980    59835990    59926081    60836118    61216122    6125

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

 

原创粉丝点击