aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark <53903062+andemark@users.noreply.github.com>2022-11-16 16:25:56 +0000
committerMark <53903062+andemark@users.noreply.github.com>2022-11-16 16:25:56 +0000
commit3e4bdcf5ef28b9ae9a417a1da8ac20ee68f3b836 (patch)
treea6d9e7f895a1bd5bc5456a5133fb6d224a7b074a
parent9d2890cd5fa223e8d4e188f404dafa7efb507b0a (diff)
downloadperlweeklychallenge-club-3e4bdcf5ef28b9ae9a417a1da8ac20ee68f3b836.tar.gz
perlweeklychallenge-club-3e4bdcf5ef28b9ae9a417a1da8ac20ee68f3b836.tar.bz2
perlweeklychallenge-club-3e4bdcf5ef28b9ae9a417a1da8ac20ee68f3b836.zip
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
+}