Comment trouver le nombre minimal dans un tableau Perl

De la tâche. En Perl programme dispose d'un tableau de @arr (les trois premières lettres du mot "array"). Besoin de trouver un nombre minimum, qui est dans ce tableau.

La meilleure façon de résoudre ce problème est d'utiliser la fonction de min de la bibliothèque List::Util. Bibliothèque List::Util va de pair avec Perl, donc si vous avez Perl, cette bibliothèque est immédiatement disponible, installation supplémentaire n'est nécessaire.

Voici un exemple de programme qui détecte et affiche le nombre minimal de la matrice qui contient les nombres:

▶ Run
#!/usr/bin/perl

use List::Util qw(min);

my @arr = (1, 2, -100, 8, 0);

print min(@arr);

Le programme affichera le nombre de -100. (Ce code dans le navigateur ).

Lors de la connexion de la bibliothèque, nous avons indiqué que nous allons utiliser la fonction min: use List::Util qw(min);. Si il suffit de connecter une bibliothèque use List::Util;, le programme génère une erreur Undefined subroutine &main::min called at script.pl line 7..

Dans le tableau ne comporte aucun élément

Dans ce cas, si le tableau n'est pas un seul élément, min retourne undef. Voici un exemple de programme qui tient compte de ces cas:

▶ Run
#!/usr/bin/perl

use List::Util qw(min);

my @arr;

my $min = min(@arr);

if (defined $min) {
    print $min;
} else {
    print "Empty array";
}

Dans ce programme, nous nous réservons le résultat de la fonction min dans une variable, si le résultat n'est pas undef, il en déduit de ce résultat, si undef, ce imprimons le texte à l'écran.

Ici, nous testons le résultat du travail de la fonction min, mais il serait possible de connaître le nombre d'éléments dans le tableau et si le nombre d'éléments 0, alors une chose que vous devez faire dans le cas d'un tableau vide.

Dans le cas si le tableau est la chaîne

Lors de l'utilisation avec la fonction min de la bibliothèque List::Util il y a une subtilité. En fait min ne retourne pas le nombre minimal de la matrice, et un élément dont la représentation sous la forme d'un nombre est minime.

Voici un exemple. Le résultat min(12, 'ABC', 44) est une chaîne de caractères 'ABC'. Cela provient de ce que la valeur numérique d'une chaîne 'ABC' est un zéro, zéro — c'est la plus petite valeur dans ce tableau. Le résultat min est un élément dont la valeur numérique est minimale. Dans cet exemple, c'est la chaîne 'ABC'.

Un autre exemple. Le résultat min(10, 7, '4H') est la chaîne de '4H'.

La documentation officielle

Voici un extrait de la sortie de la commande perldoc List::Util  sur min:

  min
        my $num = min @list;

    Similar to "max" but returns the entry in the list with the lowest
    numerical value. If the list is empty then "undef" is returned.

        $foo = min 1..10                # 1
        $foo = min 3,9,12               # 3
        $foo = min @bar, @baz           # whatever

Autres articles