aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author冯昶 <fengchang@novel-supertv.com>2025-10-06 20:44:02 +0800
committer冯昶 <fengchang@novel-supertv.com>2025-10-06 20:44:02 +0800
commit2c8ed66c1f2522db6dab30ce9d6145e3fbc96bca (patch)
tree8da76da99e9dc947b701fff44b05ae927c477f4e
parent19226ec8142e8e55790e09bb6059d6a16f20f437 (diff)
downloadperlweeklychallenge-club-2c8ed66c1f2522db6dab30ce9d6145e3fbc96bca.tar.gz
perlweeklychallenge-club-2c8ed66c1f2522db6dab30ce9d6145e3fbc96bca.tar.bz2
perlweeklychallenge-club-2c8ed66c1f2522db6dab30ce9d6145e3fbc96bca.zip
challenge 342, raku solutions
-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';