diff options
| author | Mark <53903062+andemark@users.noreply.github.com> | 2022-11-16 16:25:56 +0000 |
|---|---|---|
| committer | Mark <53903062+andemark@users.noreply.github.com> | 2022-11-16 16:25:56 +0000 |
| commit | 3e4bdcf5ef28b9ae9a417a1da8ac20ee68f3b836 (patch) | |
| tree | a6d9e7f895a1bd5bc5456a5133fb6d224a7b074a | |
| parent | 9d2890cd5fa223e8d4e188f404dafa7efb507b0a (diff) | |
| download | perlweeklychallenge-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.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 +} |
