Hi everybody,
I am working with a sorted array (sorted from smallest to largest),
containing coordinates as such:
13645692
13645693
13645694
13645695
13645696
13645697
13645698
13645699
13645700
13645701
13645702
13645703
13645704
13645705
13645706
13645707
13645708
13645709
13645710
13645711
If each element has a difference of 1 from the next element, I would like
to connect them and for this example the output will be:
13645692 - 13645711
However sometimes the elements are not separated by 1 as such:
13645692
13645693
13645694
13645709
13645710
13645711
For this example the output would be:
13645692 - 13645694
13645709 - 13645711
I have written the following code but I wish I could think of a much
better way of achieving my output. Any tips and suggestions will be
greatly appreciated! Thanks in advance.
my $prev = 'NULL';
my $first = '';
for (my $i = 0; $i < scalar(@array); ++$i){
if ($prev eq 'NULL'){
$prev = $array[$i];
$first = $array[$i];
}
else {
if ($prev == $array[$i] + 1){
$prev = $array[$i];
}
else {
print "$first - $prev\n";
$prev = $array[$i];
$first = $array[$i];
}
}
}
print "$first - $prev\n";
__END__
Dave
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/