diff options
| author | Mark <53903062+andemark@users.noreply.github.com> | 2023-12-25 12:20:55 +0000 |
|---|---|---|
| committer | Mark <53903062+andemark@users.noreply.github.com> | 2023-12-25 12:20:55 +0000 |
| commit | 06399d1731e8a64bc5d5f4070e96c218dc3212ce (patch) | |
| tree | 7bb1d6c3ed146694c88961ed61add458ae9e725c | |
| parent | 6ba11a7b1f5ede2a9ce66870c6ed091fde9ad40b (diff) | |
| download | perlweeklychallenge-club-06399d1731e8a64bc5d5f4070e96c218dc3212ce.tar.gz perlweeklychallenge-club-06399d1731e8a64bc5d5f4070e96c218dc3212ce.tar.bz2 perlweeklychallenge-club-06399d1731e8a64bc5d5f4070e96c218dc3212ce.zip | |
Challenge 249 Solutions (Raku)
| -rw-r--r-- | challenge-249/mark-anderson/raku/ch-1.raku | 12 | ||||
| -rw-r--r-- | challenge-249/mark-anderson/raku/ch-2.raku | 22 |
2 files changed, 34 insertions, 0 deletions
diff --git a/challenge-249/mark-anderson/raku/ch-1.raku b/challenge-249/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..d3b772effb --- /dev/null +++ b/challenge-249/mark-anderson/raku/ch-1.raku @@ -0,0 +1,12 @@ +#!/usr/bin/env raku +use Test; + +is-deeply equal-pairs(3,2,3,2,2,2), ((2,2),(2,2),(3,3)); +nok equal-pairs(1,2,3,4); + +sub equal-pairs(+@a where * %% 2) +{ + my $b = @a.Bag; + return False unless all($b.values) %% 2; + $b.kxxv.sort.rotor(2) +} diff --git a/challenge-249/mark-anderson/raku/ch-2.raku b/challenge-249/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..c1d73452a2 --- /dev/null +++ b/challenge-249/mark-anderson/raku/ch-2.raku @@ -0,0 +1,22 @@ +#!/usr/bin/env raku +use Test; + +is-deeply DI("IDID"), (0,4,1,3,2); +is-deeply DI("III"), (0,1,2,3); +is-deeply DI("DDI"), (3,2,0,1); +is-deeply DI("DDID"), (4,3,0,2,1); +is-deeply DI("IDDID"), (0,5,4,1,3,2); +is-deeply DI("DDD"), (3,2,1,0); +is-deeply DI("IDDIIDIIIDIIDDIDIDDI"), (0,20,19,1,2,18,3,4,5,17,6,7,16,15,8,14,9,13,12,10,11); + +sub DI($str) +{ + my @a = flat $str.comb, "I"; + my %h := { :I(0), :D(@a.end) } + + gather while @a.shift -> $a + { + take %h{$a}.abs; + %h{$a}-- + } +} |
