Task1
We find the index of the number which if removed, makes the number the maximum possible:
#!/usr/bin/env perl
use strict;
use warnings;
use List::Util qw(max);
use Test::More tests => 5;
sub make_it_bigger{
my $idx = -1;
my @res;
while(($idx = index $_[0],$_[1],$idx+1) != -1){
substr my $s = $_[0],$idx,1,'';
push @res,$s
}
max(@res)
}
is make_it_bigger('15456','5'),'1546','Example 1';
is make_it_bigger('7332','3'),'732','Example 2';
is make_it_bigger('2231','2'),'231','Example 3';
is make_it_bigger('543251','5'),'54321','Example 4';
is make_it_bigger('1921','1'),'921','Example 5';
Task2
We calculate the little or big omega of the number according to the given instructions:
#!/usr/bin/env perl
use strict;
use warnings;
use ntheory qw(factor factor_exp);
use Test::More tests => 5;
sub big_and_little_omega{
my @funcs = (\&factor_exp,\&factor);
scalar($funcs[!!$_[1]]($_[0]))
}
is big_and_little_omega(100061,0),3,'Example 1';
is big_and_little_omega(971088,0),3,'Example 2';
is big_and_little_omega(63640,1),6,'Example 3';
is big_and_little_omega(988841,1),2,'Example 4';
is big_and_little_omega(211529,0),2,'Example 5';
No comments:
Post a Comment