Сравнение 2 массивов в Perl - PullRequest
0 голосов
/ 14 июня 2010

Может ли кто-нибудь предоставить хорошее / хорошее решение в Perl для сравнения 2-х массивов (a и b), которые проверяют, найден ли каждый элемент в массиве a в массиве b (и только один раз в массиве b)?

Ответы [ 2 ]

1 голос
/ 14 июня 2010

Вас волнует, если и пункт b, что не в a?То, как вы это сформулировали, может иметь больше элементов, чем а.Также вам необходимо указать, что происходит, когда элемент дублируется в массиве.Вот некоторый код, который находит, есть ли хотя бы один из каждого элемента в a в b:

#!/usr/bin/perl

use strict;
use warnings;

sub all_in_second {
    my ($first, $second) = @_;
    my %in_second        = map { $_ => 1 } @$second;

    for my $item (@$first) {
        return 0 unless $in_second{$item};
    }
    return 1;
}

my @a = (1, 2, 3, 3, 4);
my @b = (1, 2, 3, 4, 5);

print all_in_second(\(@a, @b)) ? "true" : "false", "\n";

@a = (1, 2, 3, 3, 6);
@b = (1, 2, 3, 4, 5);

print all_in_second(\(@a, @b)) ? "true" : "false", "\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...