[Perl] Le + petit 'disponible' d'une liste

Résolu/Fermé
KuKrApOk59 Messages postés 437 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 13 septembre 2013 - 2 juil. 2010 à 22:50
KuKrApOk59 Messages postés 437 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 13 septembre 2013 - 3 juil. 2010 à 11:31
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

KuKrApOk59 Messages postés 437 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 13 septembre 2013 84
2 juil. 2010 à 23:17
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
0
KuKrApOk59 Messages postés 437 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 13 septembre 2013 84
3 juil. 2010 à 11:31
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
0