Como encontrar o número mínimo em Perl matriz

Tarefa. No Perl do programa, há uma série de @arr (para as três primeiras letras da palavra "array"). Você precisa encontrar o número mínimo, que é a matriz.

A melhor maneira de resolver este problema é usar a função min a partir de uma biblioteca List::Util. A biblioteca List::Util vai junto com o Perl, o modo que se você tem um Perl, esta biblioteca está prontamente disponível, instalar nada.

Aqui está um exemplo de um programa que localiza e exibe na tela o número mínimo a partir de uma matriz que contém o número de:

▶ Run
#!/usr/bin/perl

use List::Util qw(min);

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

print min(@arr);

O programa exibirá o número de -100. (Executar este código no navegador ).

Quando você se conectar a biblioteca de nós indicamos que nós vamos utilizar a função de min: use List::Util qw(min);. Se basta ligar biblioteca use List::Util;, o programa emitirá uma mensagem de erro Undefined subroutine &main::min called at script.pl line 7..

No array não existe nenhum elemento

No caso em que a matriz não existe nenhum elemento, o min retornará undef. Aqui está um exemplo de um programa que leva em consideração o caso:

▶ Run
#!/usr/bin/perl

use List::Util qw(min);

my @arr;

my $min = min(@arr);

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

Neste programa, nós nos reservamos o resultado da função min em uma variável, se o resultado não undef, então a saída é o resultado, se undef, então a saída é o texto que aparece na tela.

Aqui nós testamos o resultado do trabalho da função min, mas você poderia saber o número de elementos na matriz e se a quantidade de itens 0, em seguida, executar o que devo fazer se o vazio da matriz.

O trabalho, no caso, se a matriz tem a linha

Quando se trabalha com a função de min a partir de uma biblioteca List::Util há uma sutileza. Na verdade min não retorna o número mínimo da matriz e o elemento, cuja representação de números, é o mínimo.

Aqui está um exemplo. O resultado min(12, 'ABC', 44) será a linha 'ABC'. Isso ocorre devido ao fato de que o valor numérico de comando 'ABC' é zero, o zero é o menor valor em um array. O resultado min é um elemento cujo o valor numérico mínimo. Neste exemplo, a linha de 'ABC'.

Mais um exemplo. O resultado min(10, 7, '4H') será a linha '4H'.

A documentação oficial

Aqui está um trecho da saída do comando perldoc List::Util  sobre a função 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

Outros artigos