Task1
We replace the ? mark with the first letter that isn't in the string already:
#!/usr/bin/env perl
use strict;
use warnings;
sub replace_all{
my %h = map{$_ => 1} split '',$_[0];
my @chars = grep{!exists $h{$_}} 'a'..'z';
$_[0] =~ s/\?/$chars[0]/r
}
printf "%s\n",replace_all('a?z');
printf "%s\n",replace_all('pe?k');
printf "%s\n",replace_all('gra?te');
Task2
As long as there are pairs of consecutive capital and lowercase letters (irrespective of their order), we remove it from the string:
#!/usr/bin/env perl
use strict;
use warnings;
sub good_string{
my ($str) = @_;
my $chars = join '|',map{"$_\u$_|\u$_$_"} 'a'..'z';
1 while $str =~ s/$chars//;
$str
}
printf "%s\n",good_string('WeEeekly');
printf "%s\n",good_string('abBAdD');
printf "%s\n",good_string('abc');
No comments:
Post a Comment