aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-11-16 16:41:18 +0000
committerGitHub <noreply@github.com>2022-11-16 16:41:18 +0000
commit5a988cf184abea36d65094cb46171dfd43dd313c (patch)
treef0bcb0dfbd9b2bd442330b9cf9d7b1c2941689d0
parent896108a54a3caf61e661ef3ade888c3ec2ea3584 (diff)
parent3e4bdcf5ef28b9ae9a417a1da8ac20ee68f3b836 (diff)
downloadperlweeklychallenge-club-5a988cf184abea36d65094cb46171dfd43dd313c.tar.gz
perlweeklychallenge-club-5a988cf184abea36d65094cb46171dfd43dd313c.tar.bz2
perlweeklychallenge-club-5a988cf184abea36d65094cb46171dfd43dd313c.zip
Merge pull request #7093 from andemark/branch-for-challenge-191
Challenge 191 Solutions (Raku)
-rw-r--r--challenge-191/mark-anderson/raku/ch-1.raku16
-rw-r--r--challenge-191/mark-anderson/raku/ch-2.raku34
2 files changed, 50 insertions, 0 deletions
diff --git a/challenge-191/mark-anderson/raku/ch-1.raku b/challenge-191/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..1389170f56
--- /dev/null
+++ b/challenge-191/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,16 @@
+#!/usr/bin/env raku
+use Adverb::Eject;
+use Test;
+
+nok twice-largest(< 1 2 3 4 >);
+ok twice-largest(< 1 2 0 5 >);
+ok twice-largest(< 2 6 3 1 >);
+nok twice-largest(< 4 5 2 3 >);
+
+sub twice-largest(*@a)
+{
+ my $m := @a.maxpairs.List;
+ return False if $m.elems > 1;
+ @a[$m.head.key]:eject;
+ so all(@a) <= $m.head.value / 2;
+}
diff --git a/challenge-191/mark-anderson/raku/ch-2.raku b/challenge-191/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..88dc9a0a46
--- /dev/null
+++ b/challenge-191/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,34 @@
+#!/usr/bin/env raku
+use Math::Prime::Util:from<Perl5> <numtoperm>;
+use Test;
+
+# I don't know why this is so slow - it seems like it should be fast :-(
+
+is cute-list(2), 2;
+is cute-list(3), 3;
+is cute-list(4), 8;
+is cute-list(5), 10;
+is cute-list(10), 700;
+
+sub cute-list($n)
+{
+ my ($p, $ctr) = (0, 0);
+
+ LABEL: while $p < [*] 1..$n
+ {
+ my @perm = numtoperm($n, $p) >>+>> 1;
+
+ for (1..$n).rotor(2 => -1)
+ {
+ unless (@perm[.head] %% .tail or .tail %% @perm[.head])
+ {
+ $p += [*] 1..$n-.tail;
+ next LABEL
+ }
+ }
+
+ ($p, $ctr) >>+=>> 1
+ }
+
+ $ctr
+}