Come trovare il numero minimo in Perl matrice

Il compito. In Perl programma ha una matrice @arr (le prime tre lettere della parola "array"). Bisogno di trovare il numero minimo che ci sono in questo array.

Il modo migliore per risolvere questo problema è utilizzare la funzione min dalla libreria List::Util. La libreria List::Util va insieme con Perl, quindi se avete Perl, questa libreria una volta disponibile, inoltre installare nulla.

Ecco un esempio di un programma che rileva e visualizza il numero minimo di un array che contiene i numeri:

▶ Run
#!/usr/bin/perl

use List::Util qw(min);

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

print min(@arr);

Il programma visualizzerà il numero -100. (Eseguire questo codice nel browser ).

Quando si collega libreria abbiamo indicato che useremo la funzione min: use List::Util qw(min);. Se basta collegare la libreria use List::Util;, il programma genera un errore Undefined subroutine &main::min called at script.pl line 7..

In un array nessun elemento

Nel caso in cui l'array non c'è nessun elemento, min restituirà undef. Ecco un esempio di programma, che considera un caso del genere:

▶ Run
#!/usr/bin/perl

use List::Util qw(min);

my @arr;

my $min = min(@arr);

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

In questo programma ci riserviamo il risultato della funzione min in una variabile, se il risultato non undef, poi ricava questo risultato, se undef, poi ricava il testo sullo schermo.

Qui, controlliamo i risultato del lavoro funzione min, ma sarebbe possibile conoscere il numero di elementi in un array e se il numero di elementi 0, eseguire ciò che è necessario fare nel caso di un array vuoto.

Lavoro nel caso in cui in un array di stringhe

Quando si lavora con la funzione di min dalla libreria List::Util è una sottigliezza. In realtà min non restituisce il numero minimo di una matrice e di un elemento, la cui prestazione in forma di numeri è il minimo.

Ecco un esempio. Il risultato min(12, 'ABC', 44) sarà la stringa 'ABC'. Così accade che il valore numerico della riga 'ABC' è zero, zero è il più piccolo valore in questo array. Il risultato min è un elemento il cui valore numerico è minimo. In questo esempio, è una stringa di 'ABC'.

Ancora un esempio. Il risultato min(10, 7, '4H') sarà la stringa '4H'.

La documentazione ufficiale di

Ecco un frammento di output del comando perldoc List::Util  pro la funzione 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

Altri articoli