blob: e36a7939fc7ceefa1913ef689334ef280d371548 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#!/usr/bin/env perl
use strict;
use warnings;
use 5.016;
chomp(my $size = <>);
my %universe = map { $_ => 1 } 1..$size;
my %A = parse_set(scalar <>);
my %B = parse_set(scalar <>);
my %union = (%A, %B);
my %intersection = (map { $_ => 1 } grep { $B{$_} } keys %A);
my %differenceA = %A;
delete $differenceA{$_} for keys %B;
my %differenceB = %B;
delete $differenceB{$_} for keys %A;
my %Ac = %universe;
delete $Ac{$_} for keys %A;
my %Bc = %universe;
delete $Bc{$_} for keys %B;
say show_set(%union);
say show_set(%intersection);
say show_set(%differenceA);
say show_set(%differenceB);
say show_set(%Ac);
say show_set(%Bc);
sub parse_set {
my ($str) = @_;
chomp($str);
$str =~ s/^{|}$//g;
return map { $_ => 1 } split ', ', $str;
}
sub show_set {
my %set = @_;
return '{' . join(', ', sort { $a <=> $b } keys(%set)) . '}';
}
|