Task1
We count the consecutive pairs of zeros and check if the count is greater than the given n:
#!/usr/bin/env perl
use strict;
use warnings;
sub arrange_binary{
my $c = 0;
map{$c++ if $_[0]->[$_] == 0 && $_[0]->[$_+1] == 0} 0..$#{$_[0]}-1;
$c > $_[1]
}
printf "%d\n",arrange_binary([1,0,0,0,1],1);
printf "%d\n",arrange_binary([1,0,0,0,1],2);
Task2
We find the maximum sub array sum of the given length n:
#!/usr/bin/env perl
use strict;
use warnings;
use List::Util qw(sum0 min);
use feature qw(say);
sub maximum_average{
my ($arr,$n) = @_;
my $max = min @$arr;
foreach my $start(0..@$arr-$n){
my $subsum = sum0(@{$arr}[$start..$start+$n-1]);
my $avg = $subsum / $n;
$max = $avg if $avg > $max
}
$max
}
say maximum_average([1,12,-5,-6,50,3],4);
say maximum_average([5],1);
No comments:
Post a Comment