diff options
| author | Mark Anderson <mark@andemark.io> | 2025-10-06 06:13:07 +0000 |
|---|---|---|
| committer | Mark Anderson <mark@andemark.io> | 2025-10-06 06:13:07 +0000 |
| commit | 68d3ded2525d354390e175ec31dd13499cd706a6 (patch) | |
| tree | 36bb95c10613bae2f32cbead4f6250285edfe86d | |
| parent | 19226ec8142e8e55790e09bb6059d6a16f20f437 (diff) | |
| download | perlweeklychallenge-club-68d3ded2525d354390e175ec31dd13499cd706a6.tar.gz perlweeklychallenge-club-68d3ded2525d354390e175ec31dd13499cd706a6.tar.bz2 perlweeklychallenge-club-68d3ded2525d354390e175ec31dd13499cd706a6.zip | |
Challenge 342 Solutions (Raku)
| -rw-r--r-- | challenge-342/mark-anderson/raku/ch-1.raku | 22 | ||||
| -rw-r--r-- | challenge-342/mark-anderson/raku/ch-2.raku | 24 |
2 files changed, 46 insertions, 0 deletions
diff --git a/challenge-342/mark-anderson/raku/ch-1.raku b/challenge-342/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..b7eb819532 --- /dev/null +++ b/challenge-342/mark-anderson/raku/ch-1.raku @@ -0,0 +1,22 @@ +#!/usr/bin/env raku +use Test; + +is balance-string("a0b1c2"), "0a1b2c"; +is balance-string("abc12"), "a1b2c"; +is balance-string("0a2b1c3"), "0a1b2c3"; +is balance-string("1a23"), Empty.Str; +is balance-string("ab123"), "1a2b3"; + +sub balance-string($str) +{ + my %h = $str.comb.classify: { .match(/<digit>/) ?? 'digits' !! 'letters' } + + return Empty.Str if abs %h<digits> - %h<letters> > 1; + + %h<digits> .= sort; + %h<letters> .= sort; + + my @order = %h.values.sort: { -.elems, .[0].ord } + + [~] flat roundrobin @order>>.flat +} diff --git a/challenge-342/mark-anderson/raku/ch-2.raku b/challenge-342/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..86712b30d9 --- /dev/null +++ b/challenge-342/mark-anderson/raku/ch-2.raku @@ -0,0 +1,24 @@ +#!/usr/bin/env raku +use Test; + +is max-score("0011"), 4; +is max-score("0000"), 3; +is max-score("1111"), 3; +is max-score("0101"), 3; +is max-score("011101"), 5; + +sub max-score($str) +{ + my @a = $str.comb; + my %L is BagHash; + my %R is BagHash = @a; + + pop @a; + + .max given do for @a + { + %L{$_}++; + %R{$_}--; + %L{'0'} + %R{'1'} + } +} |
