Task1
We look for words uncommon to both strings:
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Show;
sub uncommon_words{
my %h;
$h{$_}++ foreach split /\s+/,"$_[0] $_[1]";
grep {$h{$_} == 1} keys %h
}
show uncommon_words('apple banana apple','banana orange');
show uncommon_words('cat dog','bird fish');
show uncommon_words('the quick brown fox','the quick');
show uncommon_words('hello','hello');
show uncommon_words('blue blue red','red green green yellow');
Task2
We remove outermost parentheses:
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More tests => 5;
sub outermost_parentheses{
my %h = ('(' => 1, ')' => 0);
my $depth = 0;
join '',
map $h{$_} == ($depth += $_ eq '(' ? 1 : -1) ? '' : $_,
split '',$_[0]
}
is outermost_parentheses('()()()'),'','Example 1';
is outermost_parentheses('(((())))'),'((()))','Example 2';
is outermost_parentheses('(()())(())'),'()()()','Example 3';
is outermost_parentheses('()((()))()'),'(())','Example 4';
is outermost_parentheses('(()(()))(()())'),'()(())()()','Example 5';
done_testing();