Task1
We count the number of even numbers because an even number's right most bit is 0, and see if that count is greater than one:
#!/usr/bin/env perl
use strict;
use warnings;
sub bitwise_or{
(grep{($_ & 1) == 0} @{$_[0]}) > 1
}
printf "%d\n",bitwise_or([1,2,3,4,5]);
printf "%d\n",bitwise_or([2,3,8,16]);
printf "%d\n",bitwise_or([1,2,5,7,9]);
Task2
We keep pushing elements into two arrays as the requirements and concatenate and return the results:
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Show;
sub distribute_elements{
my @ret1 = shift @{$_[0]};
my @ret2 = shift @{$_[0]};
while(@{$_[0]}){
my $e = shift @{$_[0]};
$ret1[-1] > $ret2[-1] ? push @ret1,$e : push @ret2,$e;
}
@ret1,@ret2
}
print show distribute_elements([2,1,3,4,5]);
print show distribute_elements([3,2,4]);
print show distribute_elements([5,4,3,8]);
No comments:
Post a Comment