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

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Podedinov
мл. сержант
Сообщения: 84
Зарегистрирован: 2008-12-28 11:50:19

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

Непрочитанное сообщение Podedinov » 2010-04-08 15:29:50

Вот вопрос как можно вычесть один массив и из другого, допустим:

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

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

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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Гость
проходил мимо

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 - результат

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

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

Непрочитанное сообщение ProFTP » 2010-04-09 7:44:56

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

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  
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение