aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xchallenge-342/feng-chang/raku/ch-1.raku10
-rwxr-xr-xchallenge-342/feng-chang/raku/ch-2.raku5
-rwxr-xr-xchallenge-342/feng-chang/raku/test.raku28
3 files changed, 43 insertions, 0 deletions
diff --git a/challenge-342/feng-chang/raku/ch-1.raku b/challenge-342/feng-chang/raku/ch-1.raku
new file mode 100755
index 0000000000..4816ea172b
--- /dev/null
+++ b/challenge-342/feng-chang/raku/ch-1.raku
@@ -0,0 +1,10 @@
+#!/bin/env raku
+
+unit sub MAIN(Str:D $s);
+
+my ($chars, $digits) = .grep(/<[a..z]>/).sort, .grep(/<[0..9]>/).sort with $s.comb.Array;
+put '"', do given +$digits - +$chars {
+ when 0|1 { roundrobin(@$digits, @$chars )».join.join }
+ when -1 { roundrobin(@$chars, @$digits)».join.join }
+ default { '' }
+}, '"';
diff --git a/challenge-342/feng-chang/raku/ch-2.raku b/challenge-342/feng-chang/raku/ch-2.raku
new file mode 100755
index 0000000000..10170b42f4
--- /dev/null
+++ b/challenge-342/feng-chang/raku/ch-2.raku
@@ -0,0 +1,5 @@
+#!/bin/env raku
+
+unit sub MAIN(Str:D $s where *.comb.all eq 0|1);
+
+put (1..$s.chars-1).map({ +$s.substr(0,$_).comb.grep(/0/) + $s.substr($_).comb.sum }).max;
diff --git a/challenge-342/feng-chang/raku/test.raku b/challenge-342/feng-chang/raku/test.raku
new file mode 100755
index 0000000000..9e6aca82c7
--- /dev/null
+++ b/challenge-342/feng-chang/raku/test.raku
@@ -0,0 +1,28 @@
+#!/bin/env raku
+
+# The Weekly Challenge 342
+use Test;
+
+sub pwc-test(Str:D $script, Bool :$deeply? = False, *@input) {
+ my ($expect, $assertion) = @input.splice(*-2, 2);
+ my $p = run $script, |@input, :out;
+ if $deeply {
+ is-deeply $p.out.slurp(:close).chomp.words.Bag, $expect, $assertion;
+ } else {
+ is $p.out.slurp(:close).chomp, $expect, $assertion;
+ }
+}
+
+# Task 1, Balance String
+pwc-test './ch-1.raku', 'a0b1c2', '"0a1b2c"', 'Balance String: a0b1c2 => "0a1b2c"';
+pwc-test './ch-1.raku', 'abc12', '"a1b2c"', 'Balance String: abc12 => "a1b2c"';
+pwc-test './ch-1.raku', '0a2b1c3', '"0a1b2c3"', 'Balance String: 0a2b1c3 => "0a1b2c3"';
+pwc-test './ch-1.raku', '1a23', '""', 'Balance String: 1a23 => ""';
+pwc-test './ch-1.raku', 'ab123', '"1a2b3"', 'Balance String: ab123 => "1a2b3"';
+
+# Task 2, Max Score
+pwc-test './ch-2.raku', '0011', 4, 'Max Score: 0011 => 4';
+pwc-test './ch-2.raku', '0000', 3, 'Max Score: 0000 => 3';
+pwc-test './ch-2.raku', '1111', 3, 'Max Score: 1111 => 3';
+pwc-test './ch-2.raku', '0101', 3, 'Max Score: 0101 => 3';
+pwc-test './ch-2.raku', '011101', 5, 'Max Score: 011101 => 5';