Task1
We check each string with the reverse of all others and increment the count if they are equal:
#!/usr/bin/env perl
use strict;
use warnings;
sub maximum_pairs{
my ($a) = @_;
my $c = 0;
map{my $i = $_;
map{$c++ if $a->[$i] eq reverse $a->[$_]}$i+1..$#$a}0..$#$a;
$c
}
printf "%d\n", maximum_pairs(['ab','de','ed','bc']);
printf "%d\n", maximum_pairs(['aa','ba','cd','ed']);
printf "%d\n", maximum_pairs(['uv','qp','st','vu','mn','pq']);
Task2
We keep picking a character from each string alternatively until we exhaust the strings:
#!/usr/bin/env perl
use strict;
use warnings;
sub merge_strings{
my ($res,$m,$n) = ('',length $_[0],length $_[1]);
for(my $i = 0; $i < $m || $i < $n; ++$i){
$res .= substr $_[0],$i,1 if $i < $m;
$res .= substr $_[1],$i,1 if $i < $n;
}
$res
}
printf "%s\n",merge_strings('abcd','1234');
printf "%s\n",merge_strings('abc','12345');
printf "%s\n",merge_strings('abcde','123');
No comments:
Post a Comment