[Perl] Le + petit 'disponible' d'une liste [Résolu/Fermé]

Signaler
Messages postés
437
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
-
Messages postés
437
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
-
Bonjour,

J'ai actuellement un petit souci
Je m'explique :

J'ai une @liste qui contient :
1 2 3 4 6 8 11 15

J'aurais voulu savoir comment je pouvais m'y prendre pour trouver que '5' est le premier chiffre qui manque à la liste

Si vous aviez une idée pour m'éclaircir sur le sujet ...

2 réponses

Messages postés
437
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
82
Je suis en train de me creuser le citron a partir d'un script bash qui le fait
J'en fait un bout de perl fonctionnel, et je le posterai ici ...

On sait jamais, ca peut servir :p
Messages postés
437
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
82
Plop,

J'ai fini par utiliser un bout de perl présent dans le script adduser de ma distrib
Finalement, l'objectif est le même

Ce qui donne :
# Pour recuperer le premier nombre manquant d'une liste
#######################################################
sub first_avail_id {
    my ($min, $max, @ids) = @_;
    @ids = sort {$a <=> $b} @ids;
    while ($min <= $max) {
        return $min if ($min <  $ids[0] || @ids==0);
        shift @ids  if ($min >  $ids[0]);
        $min++      if ($min == $ids[0]);
    }

    -1;                         # nothing available
}


@ids est la liste que l'on veut parser
$min, le plus petit élément de @ids
$max, le plus grand élément de @ids