aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorE7-87-83 <fungcheokyin@gmail.com>2022-03-17 09:26:23 +0800
committerE7-87-83 <fungcheokyin@gmail.com>2022-03-17 09:26:23 +0800
commitdda6cbc53bc7592cca40c5f45cf5c5fcff1a34b9 (patch)
tree356b33efd72f62bf24c14ed753eca4b74ae44e79
parent33e4df55e2e63dd53955f70b1e1defbcf4517dbe (diff)
downloadperlweeklychallenge-club-dda6cbc53bc7592cca40c5f45cf5c5fcff1a34b9.tar.gz
perlweeklychallenge-club-dda6cbc53bc7592cca40c5f45cf5c5fcff1a34b9.tar.bz2
perlweeklychallenge-club-dda6cbc53bc7592cca40c5f45cf5c5fcff1a34b9.zip
TWC 156 Task 2 (2nd commit)
-rw-r--r--challenge-156/cheok-yin-fung/perl/ch-2.pl11
1 files changed, 6 insertions, 5 deletions
diff --git a/challenge-156/cheok-yin-fung/perl/ch-2.pl b/challenge-156/cheok-yin-fung/perl/ch-2.pl
index b61f0dd8a2..5feecf02dc 100644
--- a/challenge-156/cheok-yin-fung/perl/ch-2.pl
+++ b/challenge-156/cheok-yin-fung/perl/ch-2.pl
@@ -6,7 +6,7 @@
use v5.22.0;
use warnings;
-use List::Util qw/uniqint/;
+use List::Util qw/uniqint sum/;
use Math::Prime::Util qw/next_prime/;
if (defined($ARGV[0])) {
@@ -18,8 +18,9 @@ if (defined($ARGV[0])) {
sub weird {
my $num = $_[0];
- my @divisor = proper_factors($num);
- return subset_sum($num, [@divisor]);
+ my @proper_divisors = proper_divisors($num);
+ return 0 if (sum @proper_divisors) < $num;
+ return !subset_sum($num, [@proper_divisors]);
}
@@ -43,7 +44,7 @@ sub factorization {
-sub proper_factors {
+sub proper_divisors {
my @prime_factors = factorization($_[0]);
my @pf = (1);
while (scalar @prime_factors > 0) {
@@ -76,7 +77,7 @@ sub subset_sum {
}
}
}
- return !$DP->[$sum][scalar @A];
+ return $DP->[$sum][scalar @A];
}