diff options
| author | 冯昶 <fengchang@novel-supertv.com> | 2024-04-08 16:07:33 +0800 |
|---|---|---|
| committer | 冯昶 <fengchang@novel-supertv.com> | 2024-04-08 16:07:33 +0800 |
| commit | 5f944d35e5479ea32a57fc91c85d4c057e8f67cd (patch) | |
| tree | 284d1c8d6e91e55a38a3c5cec9640ee7ad7025bb | |
| parent | f14e99c374e42f272a7e43324e5ac195996c9a54 (diff) | |
| download | perlweeklychallenge-club-5f944d35e5479ea32a57fc91c85d4c057e8f67cd.tar.gz perlweeklychallenge-club-5f944d35e5479ea32a57fc91c85d4c057e8f67cd.tar.bz2 perlweeklychallenge-club-5f944d35e5479ea32a57fc91c85d4c057e8f67cd.zip | |
challenge 264, raku solutions
| -rwxr-xr-x | challenge-264/feng-chang/raku/ch-1.raku | 7 | ||||
| -rwxr-xr-x | challenge-264/feng-chang/raku/ch-2.raku | 11 | ||||
| -rwxr-xr-x | challenge-264/feng-chang/raku/test.raku | 27 |
3 files changed, 45 insertions, 0 deletions
diff --git a/challenge-264/feng-chang/raku/ch-1.raku b/challenge-264/feng-chang/raku/ch-1.raku new file mode 100755 index 0000000000..c8bb36b262 --- /dev/null +++ b/challenge-264/feng-chang/raku/ch-1.raku @@ -0,0 +1,7 @@ +#!/bin/env raku + +unit sub MAIN(Str:D $s); + +my %s = $s.comb.Set; +my \gel = ('A'..'Z').grep({ %s{.lc} and %s{$_} }).max; +put gel ne '-Inf' ?? gel !! ''; diff --git a/challenge-264/feng-chang/raku/ch-2.raku b/challenge-264/feng-chang/raku/ch-2.raku new file mode 100755 index 0000000000..93b18879a0 --- /dev/null +++ b/challenge-264/feng-chang/raku/ch-2.raku @@ -0,0 +1,11 @@ +#!/bin/env raku + +unit sub MAIN(Str $source, Str:D $indices); + +use MONKEY-SEE-NO-EVAL; + +my @src = EVAL "[$source]"; +my @ndx = EVAL "[$indices]"; +my @tgt; +@tgt.splice(@ndx[$_], 0, @src[$_]) for ^+@src; +put @tgt; diff --git a/challenge-264/feng-chang/raku/test.raku b/challenge-264/feng-chang/raku/test.raku new file mode 100755 index 0000000000..1f5b291b7f --- /dev/null +++ b/challenge-264/feng-chang/raku/test.raku @@ -0,0 +1,27 @@ +#!/bin/env raku + +# The Weekly Challenge 264 +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, Greatest English Letter +pwc-test './ch-1.raku', 'PeRlwEeKLy', 'L', 'Greatest English Letter: PeRlwEeKLy => L'; +pwc-test './ch-1.raku', 'ChaLlenge', 'L', 'Greatest English Letter: ChaLlenge => L'; +pwc-test './ch-1.raku', 'The', '', 'Greatest English Letter: The => ""'; + +# Task 2, Target Array +pwc-test './ch-2.raku', '0,1,2,3,4', '0,1,2,2,1', '0 4 1 3 2', + 'Target Array: @source=(0,1,2,3,4), @indices= (0,1,2,2,1) => (0,4,1,3,2)'; +pwc-test './ch-2.raku', '1,2,3,4,0', '0,1,2,3,0', '0 1 2 3 4', + 'Target Array: @source=(1,2,3,4,0), @indices= (0,1,2,3,0) => (0,1,2,3,4)'; +pwc-test './ch-2.raku', 1, 0, '1', + 'Target Array: @source=(1), @indices= (0) => (1)'; |
