aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Anderson <mark@andemark.io>2025-10-06 06:13:07 +0000
committerMark Anderson <mark@andemark.io>2025-10-06 06:13:07 +0000
commit68d3ded2525d354390e175ec31dd13499cd706a6 (patch)
tree36bb95c10613bae2f32cbead4f6250285edfe86d
parent19226ec8142e8e55790e09bb6059d6a16f20f437 (diff)
downloadperlweeklychallenge-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.raku22
-rw-r--r--challenge-342/mark-anderson/raku/ch-2.raku24
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'}
+ }
+}