Task1
We sort the array then find the difference of the two smallest and largest pairs:
#!/usr/bin/env perl
use strict;
use warnings;
sub max_diff{
my ($arr) = @_;
@$arr = sort{$a <=> $b} @$arr;
$arr->[-1] * $arr->[-2] - $arr->[0] * $arr->[1]
}
printf "%d\n",max_diff([5,9,3,4,6]);
printf "%d\n",max_diff([1,-2,3,-4]);
printf "%d\n",max_diff([-3,-1,-2,-4]);
printf "%d\n",max_diff([10,2,0,5,1]);
printf "%d\n",max_diff([7,8,9,10,10]);
Task2
We take the maximum of the running sum of the given array:
#!/usr/bin/env perl
use strict;
use warnings;
use List::Util qw(max);
sub peak_point{
my $s = 0;
max 0,map {$s += $_} @{$_[0]}
}
printf "%d\n",peak_point([-5,1,5,-9,2]);
printf "%d\n",peak_point([10,10,10,-25]);
printf "%d\n",peak_point([3,-4,2,5,-6,1]);
printf "%d\n",peak_point([-1,-2,-3,-4]);
printf "%d\n",peak_point([-10,15,5]);
No comments:
Post a Comment