Task1
We count the characters' occurrences of the first string, and do the same thing for the second string too but this time we decrement the count or if we hit 0 (false), then we delete that hash entry, leaving us with the only odd character as the remaining key to be returned:
#!/usr/bin/env perl
use strict;
use warnings;
sub odd_character{
my %h;
map{++$h{$_}}split '',$_[0];
map{--$h{$_}||delete $h{$_}}split '',$_[1];
keys %h
}
printf "%s\n",odd_character("Perl","Preel");
printf "%s\n",odd_character("Weekly","Weeakly");
printf "%s\n",odd_character("Box","Boxy");
Task2
We count the occurrences of each word excluding the banned word, and return the one with the highest count:
#!/usr/bin/env perl
use strict;
use warnings;
sub most_frequent_word{
my %h;
map{$h{$_}++ if $_ ne $_[1]} split /[^\w]/,$_[0];
(sort{$h{$b}<=>$h{$a}}keys %h)[0]
}
printf "%s\n",most_frequent_word("Joe hit a ball, the hit ball ".
"flew far after it was hit.",
"hit");
printf "%s\n",most_frequent_word("Perl and Raku belong to the same family.".
" Perl is the most popular language ".
"in the weekly challenge.",
"the");
No comments:
Post a Comment