Страница 1 из 1

Вычетание одного массива из другого

Добавлено: 2010-04-08 15:29:50
Podedinov
Вот вопрос как можно вычесть один массив и из другого, допустим:

Код: Выделить всё

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

@a-@b=@c=(6,7,8,9);

Re: Вычетание одного массива из другого

Добавлено: 2010-04-08 15:47:53
Гость
В инете нашлось вот:

Код: Выделить всё

my @small = ( 1, 2, 3, 4, 5 );
my @big = ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 );
my @res;
my %h;

foreach (@small)
{
    $h{$_} = 1;
}
foreach (@big) {
    push @res, $_ unless (defined($h{$_}));
}
в @res - результат

Re: Вычетание одного массива из другого

Добавлено: 2010-04-09 7:44:56
ProFTP

Код: Выделить всё

use Quantum::Superpositions;

 @a = (a,a,1,1,2,3,4,5,6,7,8,9,10);      # integers
 @b = (1,2,4,6,8,10,12,14,16,18,20); # doubled
# @c = @a;
my @unionAB        = sort { $a <=> $b } eigenstates( any(@a, @b) );
my @intersectionAB = sort { $a <=> $b } eigenstates( any(@a) != any(@b) );
my @differenceAB   = sort { $a <=> $b } eigenstates( any(@a) != all(@b) );

# print "@intersectionAB\n";
# print " @unionAB  \n";
 print "  @differenceAB  \n";

Код: Выделить всё

$ ./perl.pl
  a 3 5 7 9