[perl] 配列の和・積・差
配列をマージしたり差分をとったりしたいとよく思うのでメモ。
ハッシュ便利だなあ。
和集合 A∪B
my @array_a = qw/1 2 3 4 5/;
my @array_b = qw/3 4 5 6 7/;
my %cnt = ();
my @array = grep { ++$cnt{$_} == 1 } (@array_a, @array_b);
積集合 A∩B
my @array_a = qw/1 2 3 4 5/;
my @array_b = qw/3 4 5 6 7/;
my %cnt = ();
my @array = grep { ++$cnt{$_} == 2 } (@array_a, @array_b);
差集合 A-B
my @array_a = qw/1 2 3 4 5/;
my @array_b = qw/3 4 5 6 7/;
my %cnt = ();
map { $cnt{$_}-- } @array_b;
my @array = grep { ++$cnt{$_} == 1 } @array_a;