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
|
use strict;
use warnings;
my %position = (
"01" => "03",
"04" => "06",
"07" => "09",
"11" => "13",
"14" => "16",
"19" => "21",
"25" => "30",
"35" => "39",
"40" => "50",
);
# la map ne stocke pas les données dans l'ordre d'insertion, il faut trier le tableau.
my @array = %position;
# ici on se sert du cas particulier : toutes les valeurs se suivent
@array = sort @array;
%position = ();
my $minvalue = $array[0];
for (my $i = 0; $i < scalar(@array); $i += 2) {
my $valeur1 = $array[$i + 1]; # dans le couple "01" => "03", on prend "03"
my $valeur2 = $array[$i + 2] || 0; # dans le couple suivant ("04", "06"), on prend "04. S'il on est en dehors du tableau, on prend la valeur "0"
if ($valeur2 != ($valeur1 + 1)) {
$position{$minvalue} = $valeur1;
print("$minvalue - $valeur1\n");
$minvalue = $valeur2;
}
} |
Partager