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

Résolu
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 ...

--
Si vous avez votre réponse, pensez à spécifier : [Résolu]

2 réponses

  1. 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
    1. 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