Task1
We deduplicate the list and see if only one item remains and return it, otherwise we return undef:
#!/usr/bin/env perl
use strict;
use warnings;
use List::MoreUtils qw(singleton);
sub unique_number{
my @arr = singleton @{$_[0]};
@arr == 1 ? $arr[0] : undef
}
printf "%d\n",unique_number([3,3,1]);
printf "%d\n",unique_number([3,2,4,2,4]);
printf "%d\n",unique_number([1]);
printf "%d\n",unique_number([4,3,1,1,1,4]);
Task2
We take the frequency of the array elements, and see if all of them are equivalent to the corresponding elements of the array:
#!/usr/bin/env perl
use strict;
use warnings;
use List::MoreUtils qw(all frequency);
sub digit_count_value{
my ($i,%h) = (0,frequency(@{$_[0]}));
all{($h{$i++} // 0) == $_} @{$_[0]}
}
printf "%d\n",digit_count_value([1,2,1,0]);
printf "%d\n",digit_count_value([0,3,0]);
No comments:
Post a Comment