aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-03-15 22:50:55 +0000
committerGitHub <noreply@github.com>2022-03-15 22:50:55 +0000
commit157dde692ffe557ed8359b94bb2ad8c83b44360e (patch)
tree7eaacb9497428d5959b9a5f6f62aae767637bee2
parent77fa793c1769f520663db912c463afcac9392fc7 (diff)
parente4dd63ce924a5440a23ebff642e08e27793cc0af (diff)
downloadperlweeklychallenge-club-157dde692ffe557ed8359b94bb2ad8c83b44360e.tar.gz
perlweeklychallenge-club-157dde692ffe557ed8359b94bb2ad8c83b44360e.tar.bz2
perlweeklychallenge-club-157dde692ffe557ed8359b94bb2ad8c83b44360e.zip
Merge pull request #5783 from andemark/branch-for-challenge-156
Branch for challenge 156
-rw-r--r--challenge-156/mark-anderson/raku/ch-1.raku10
-rw-r--r--challenge-156/mark-anderson/raku/ch-2.raku38
2 files changed, 48 insertions, 0 deletions
diff --git a/challenge-156/mark-anderson/raku/ch-1.raku b/challenge-156/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..9d83cfd997
--- /dev/null
+++ b/challenge-156/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,10 @@
+#!/usr/bin/env raku
+
+use Test;
+
+is-deeply (1..*).grep(&pernicious).head(10), (3, 5, 6, 7, 9, 10, 11, 12, 13, 14);
+
+sub pernicious($n)
+{
+ $n.base(2).comb.sum.is-prime
+}
diff --git a/challenge-156/mark-anderson/raku/ch-2.raku b/challenge-156/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..086f163102
--- /dev/null
+++ b/challenge-156/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,38 @@
+#!/usr/bin/env raku
+
+use Test;
+use Prime::Factor;
+
+nok weird(12);
+nok weird(360);
+nok weird(420);
+
+ok weird(70);
+ok weird(836);
+ok weird(7192);
+ok weird(10792);
+ok weird(12670);
+ok weird(14770);
+
+sub weird($n)
+{
+ my @p = proper-divisors($n);
+ return 0 if @p.sum <= $n;
+ return + not subset-sum($n, @p);
+}
+
+sub subset-sum($sum, @n)
+{
+ my @a = 1, |(0 xx $sum);
+ @a[@n.head] = 1;
+
+ for @n.skip -> $n
+ {
+ for ($n..$sum).reverse -> $i
+ {
+ @a[$i] = @a[$i-$n] unless @a[$i]
+ }
+ }
+
+ @a.tail
+}