blob: 3de5d2bc6b16082053dd5c6ca3d67602ba97842a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#!/usr/bin/env perl
# -*- Mode: cperl; cperl-indent-level:4 tab-width: 8; indent-tabs-mode: nil -*-
# -*- coding: utf-8 -*-
use strict; use warnings;
use v5.26;
# note: no sanity check !!
my @sorted = sort { $a <=> $b } @ARGV;
push @sorted, $sorted[-1]+2; # dummy
my @longest_seq_list = ();
my $longest_size = 0;
my $prev = shift @sorted;
my @curr_seq = ($prev);
for my $curr (@sorted) {
if ( $curr - $prev == 1 ) {
push @curr_seq, ($curr); # concat. current seq
} elsif ( $curr == $prev ) { # skip
} else { # update longest
my $curr_size = scalar @curr_seq;
if ( $curr_size > $longest_size ) {
$longest_size = $curr_size;
@longest_seq_list = ( [ @curr_seq ] );
} elsif ( $curr_size == $longest_size ) {
push @longest_seq_list, [ @curr_seq ];
}
@curr_seq = ($curr);
}
$prev = $curr;
}
if ( $longest_size > 0 ) {
say "longest size: ".$longest_size;
say "total ".(scalar @longest_seq_list)." sequencies found.";
for my $seq (@longest_seq_list) {
say "[", join(", ", @$seq), "]";
}
}
|