From dda6cbc53bc7592cca40c5f45cf5c5fcff1a34b9 Mon Sep 17 00:00:00 2001 From: E7-87-83 Date: Thu, 17 Mar 2022 09:26:23 +0800 Subject: TWC 156 Task 2 (2nd commit) --- challenge-156/cheok-yin-fung/perl/ch-2.pl | 11 ++++++----- 1 file 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]; } -- cgit