Làm thế nào để tìm tối thiểu số trong một Perl mảng

Nhiệm vụ. Trong Văn chương trình có một mảng @arr (ba chữ cái đầu từ chữ "mảng"). Cần phải tìm tối thiểu số đó là mảng này.

Cách tốt nhất để giải quyết vấn đề này là để sử dụng các chức năng min từ thư viện List::Util. Thư viện List::Util đi kèm với Perl, vì vậy, nếu bạn có Perl, thư viện này là có bổ sung cài đặt, không có gì.

Đây là một ví dụ chương trình tìm và hiển thị tối thiểu số từ mảng, trong đó có các con số:

▶ Run
#!/usr/bin/perl

use List::Util qw(min);

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

print min(@arr);

Chương trình sẽ hiển thị các số dưới 100. (Để thực hiện các mã trình duyệt ).

Khi anh kết nối với một thư viện, chúng ta đã chỉ ra rằng chúng ta sẽ sử dụng các chức năng min: use List::Util qw(min);. Nếu bạn chỉ cần kết nối thư viện use List::Util;, các chương trình sẽ cấp một lỗi Undefined subroutine &main::min called at script.pl line 7..

Trong mảng không có yếu tố

Nếu các mảng không có yếu tố, sau đó min sẽ trở lại undef. Đây là chương trình mẫu trong đó có tính đến trường hợp sau đây:

▶ Run
#!/usr/bin/perl

use List::Util qw(min);

my @arr;

my $min = min(@arr);

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

Trong chương trình này, chúng tôi lưu trữ các kết quả của các chức năng min trong những biến nếu quả là không undef, chúng ta suy ra kết quả này, nếu undef, chúng ta suy ra chữ trên màn hình.

Ở đây chúng tôi kiểm tra kết quả của các chức năng min, nhưng nó sẽ có thể cho biết số của các yếu tố trong mảng và nếu số của mục là 0, sau đó thực hiện những gì anh cần phải làm gì trong trường hợp của một mảng trống rỗng.

Làm việc trong trường hợp các mảng đã chuỗi

Khi làm việc với các chức năng min từ thư viện List::Util có một sự tinh tế. Thực sự min không trở về mức tối thiểu số từ các mảng, và những phần tử mà xem số là tối thiểu.

Đây là một ví dụ. Kết quả min(12, 'ABC', 44) sẽ dòng 'ABC'. Điều này xảy ra do thực tế mà giá trị số của chuỗi 'ABC' được không, không là nhỏ nhất có giá trị trong mảng này. Kết quả min là nguyên tố có giá trị số là tối thiểu. Trong ví dụ này, chuỗi 'ABC'.

Một ví dụ khác. Kết quả min(10, 7, '4H') sẽ dòng '4H'.

Tài liệu chính thức

Đây là một đoạn trong đầu ra perldoc List::Util  về chức năng 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

Các bài viết khác