diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-11-16 16:41:18 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-16 16:41:18 +0000 |
| commit | 5a988cf184abea36d65094cb46171dfd43dd313c (patch) | |
| tree | f0bcb0dfbd9b2bd442330b9cf9d7b1c2941689d0 | |
| parent | 896108a54a3caf61e661ef3ade888c3ec2ea3584 (diff) | |
| parent | 3e4bdcf5ef28b9ae9a417a1da8ac20ee68f3b836 (diff) | |
| download | perlweeklychallenge-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.raku | 16 | ||||
| -rw-r--r-- | challenge-191/mark-anderson/raku/ch-2.raku | 34 |
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 +} |
