Task1
We deduplicate and sort the array in descending order, then we take the third maximum number if there's one, otherwise we take the max number:
#!/usr/bin/env perl
use strict;
use warnings;
use List::Util qw(max);
use List::MoreUtils qw(uniq);
sub third_maximum{
my @arr = sort{$b <=> $a} uniq @{$_[0]};
$arr[2] // $arr[0]
}
printf "%d\n",third_maximum([5,6,4,1]);
printf "%d\n",third_maximum([4,5]);
printf "%d\n",third_maximum([1,2,2,3]);
Task2
For each line in the input file, we shuffle the middle letters of its words, and print that line:
#!/usr/bin/env perl
use strict;
use warnings;
use List::Util qw(shuffle);
die "No file provided!\n" unless @ARGV == 1;
while(<>){
s/(\w)(\w*)(\w)/$1.join '',shuffle split '',$2.$3/ge;
print
}
No comments:
Post a Comment