From 2c8ed66c1f2522db6dab30ce9d6145e3fbc96bca Mon Sep 17 00:00:00 2001 From: 冯昶 Date: Mon, 6 Oct 2025 20:44:02 +0800 Subject: challenge 342, raku solutions --- challenge-342/feng-chang/raku/ch-1.raku | 10 ++++++++++ challenge-342/feng-chang/raku/ch-2.raku | 5 +++++ challenge-342/feng-chang/raku/test.raku | 28 ++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100755 challenge-342/feng-chang/raku/ch-1.raku create mode 100755 challenge-342/feng-chang/raku/ch-2.raku create mode 100755 challenge-342/feng-chang/raku/test.raku 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'; -- cgit