##
sub has_odd_ab {
local $_ = shift || $_;
my $n = () = /ab/g; # count matches
1 & $n # odd?
}
##
##
sub odd_a {
local $_ = shift || $_;
1 & tr/a//;
}
sub odd_b {
local $_ = shift || $_;
1 & tr/b//;
}
##
##
sub prob_one {
local $_ = shift || $_;
is_abc and has_odd_ab;
}
sub prob_two {
local $_ = shift || $_;
is_ab and ! odd_a or odd_b;
}