aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author冯昶 <fengchang@novel-supertv.com>2024-07-29 16:07:14 +0800
committer冯昶 <fengchang@novel-supertv.com>2024-07-29 16:07:14 +0800
commit78709d96cb58bfda9e2047eee60c081e1565b0cf (patch)
tree34eb48aa109c92f7adfabe588bbf81a26ac3d18e
parentb9587166580480d2f5dddce64bfcb8d33ef4e127 (diff)
downloadperlweeklychallenge-club-78709d96cb58bfda9e2047eee60c081e1565b0cf.tar.gz
perlweeklychallenge-club-78709d96cb58bfda9e2047eee60c081e1565b0cf.tar.bz2
perlweeklychallenge-club-78709d96cb58bfda9e2047eee60c081e1565b0cf.zip
challenge 280, raku solutions
-rwxr-xr-xchallenge-280/feng-chang/raku/ch-1.raku5
-rwxr-xr-xchallenge-280/feng-chang/raku/ch-2.raku5
-rwxr-xr-xchallenge-280/feng-chang/raku/test.raku24
3 files changed, 34 insertions, 0 deletions
diff --git a/challenge-280/feng-chang/raku/ch-1.raku b/challenge-280/feng-chang/raku/ch-1.raku
new file mode 100755
index 0000000000..42ee2ea734
--- /dev/null
+++ b/challenge-280/feng-chang/raku/ch-1.raku
@@ -0,0 +1,5 @@
+#!/bin/env raku
+
+unit sub MAIN(Str:D $s);
+
+put $s.match(/(.).*$0/, :ex).sort(*.pos)[0].comb[0];
diff --git a/challenge-280/feng-chang/raku/ch-2.raku b/challenge-280/feng-chang/raku/ch-2.raku
new file mode 100755
index 0000000000..a6474b8fc1
--- /dev/null
+++ b/challenge-280/feng-chang/raku/ch-2.raku
@@ -0,0 +1,5 @@
+#!/bin/env raku
+
+unit sub MAIN(Str:D $s);
+
+put +$s.split('|')[0,2...*].join.comb.grep('*');
diff --git a/challenge-280/feng-chang/raku/test.raku b/challenge-280/feng-chang/raku/test.raku
new file mode 100755
index 0000000000..77cc56b8c7
--- /dev/null
+++ b/challenge-280/feng-chang/raku/test.raku
@@ -0,0 +1,24 @@
+#!/bin/env raku
+
+# The Weekly Challenge 280
+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, Twice Appearance
+pwc-test './ch-1.raku', 'acbddbca', 'd', 'Twice Appearance: acbddbca => d';
+pwc-test './ch-1.raku', 'abccd', 'c', 'Twice Appearance: abccd => c';
+pwc-test './ch-1.raku', 'abcdabbb', 'a', 'Twice Appearance: abcdabbb => a';
+
+# Task 2, Count Asterisks
+pwc-test './ch-2.raku', 'p|*e*rl|w**e|*ekly|', 2, 'Count Asterisks: "p|*e*rl|w**e|*ekly|" => 2';
+pwc-test './ch-2.raku', 'perl', 0, 'Count Asterisks: "perl" => 0';
+pwc-test './ch-2.raku', 'th|ewe|e**|k|l***ych|alleng|e', 5, 'Count Asterisks: "th|ewe|e**|k|l***ych|alleng|e" => 5';