Task1
We return the substrings which consists of vowels and has all 5 of them:
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More tests => 5;
sub count_vowel{
my @res;
my $len = length $_[0];
foreach my $s(0..$len-1){
foreach my $l(5..$len-$s){
my $sub = substr($_[0],$s,$l);
next unless $sub =~ /^[aeiou]+$/;
next unless (5 == grep {$sub =~ /$_/} qw(a e i o u));
push @res,$sub
}
}
\@res
}
is_deeply count_vowel('aeiou'),['aeiou'],'Example 1';
is_deeply count_vowel('aaeeeiioouu'),
['aaeeeiioou','aaeeeiioouu','aeeeiioou','aeeeiioouu'],'Example 2';
is_deeply count_vowel('aeiouuaxaeiou'),
['aeiou','aeiouu','aeiouua','eiouua','aeiou'],'Example 3';
is_deeply count_vowel('uaeiou'),['uaeio','uaeiou','aeiou'],'Example 4';
is_deeply count_vowel('aeioaeioa'),[],'Example 5';
done_testing();
Task2
We group the digits and find the maximum:
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More tests => 5;
sub largest_same_digit_number{
my $r = -1;
while($_[0] =~ /((.)\2*)/g){
$r = $1 if $r < $1
}
0 + $r
}
is largest_same_digit_number('6777133339'),3333,'Example 1';
is largest_same_digit_number('1200034'),4,'Example 2';
is largest_same_digit_number('44221155'),55,'Example 3';
is largest_same_digit_number('88888'),88888,'Example 4';
is largest_same_digit_number('11122233'),222,'Example 5';
done_testing();
No comments:
Post a Comment