Comment trouver le nombre maximal de Perl tableau

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

La meilleure façon de résoudre ce problème est d'utiliser la fonction de max 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 maximal à partir d'un tableau contenant le nombre de:

▶ Run
#!/usr/bin/perl

use List::Util qw(max);

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

print max(@arr);

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

Lors de la connexion de la bibliothèque, nous avons indiqué que nous allons utiliser la fonction max: use List::Util qw(max);. Si il suffit de connecter une bibliothèque use List::Util;, le programme génère une erreur Undefined subroutine &main::max 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, max retourne undef. Voici un exemple de programme qui tient compte de ces cas:

▶ Run
#!/usr/bin/perl

use List::Util qw(max);

my @arr;

my $max = max(@arr);

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

Dans ce programme, nous nous réservons le résultat de la fonction max 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 max, 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 max de la bibliothèque List::Util il y a une subtilité. En fait max ne retourne pas le nombre maximal de la matrice, et l'élément, dont la représentation dans la forme d'un nombre est le plus élevé.

Voici un exemple. Le résultat max(-100, 'ABC', -4) 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 grande valeur dans ce tableau, il sera donc de résultats est un élément avec la plus grande valeur numérique. Dans cet exemple, c'est la chaîne 'ABC'.

Un autre exemple. Le résultat max(1, 7, '10W') est une chaîne de caractères '10W'.

La documentation officielle

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

  max
        my $num = max @list;

    Returns the entry in the list with the highest numerical value. If the
    list is empty then "undef" is returned.

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

Autres articles