aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author冯昶 <fengchang@novel-supertv.com>2024-06-11 18:35:31 +0800
committer冯昶 <fengchang@novel-supertv.com>2024-06-11 18:35:31 +0800
commit2a6cdeb8e1b429bdb337b3e261f83bdd0a5b80d9 (patch)
treeb0118315632148f728c31d8c216914df88ba2ffc
parent514530d6be7cc5067a95a11ebedff9e0d4d46cfe (diff)
downloadperlweeklychallenge-club-2a6cdeb8e1b429bdb337b3e261f83bdd0a5b80d9.tar.gz
perlweeklychallenge-club-2a6cdeb8e1b429bdb337b3e261f83bdd0a5b80d9.tar.bz2
perlweeklychallenge-club-2a6cdeb8e1b429bdb337b3e261f83bdd0a5b80d9.zip
challenge 273, raku solutions
-rwxr-xr-xchallenge-273/feng-chang/raku/ch-1.raku5
-rwxr-xr-xchallenge-273/feng-chang/raku/ch-2.raku7
-rwxr-xr-xchallenge-273/feng-chang/raku/test.raku28
3 files changed, 40 insertions, 0 deletions
diff --git a/challenge-273/feng-chang/raku/ch-1.raku b/challenge-273/feng-chang/raku/ch-1.raku
new file mode 100755
index 0000000000..02a354a425
--- /dev/null
+++ b/challenge-273/feng-chang/raku/ch-1.raku
@@ -0,0 +1,5 @@
+#!/bin/env raku
+
+unit sub MAIN(Str:D $s, Str:D $c where $c.chars == 1);
+
+put ($s.comb.Bag{$c} / $s.chars * 100 + 0.5).Int;
diff --git a/challenge-273/feng-chang/raku/ch-2.raku b/challenge-273/feng-chang/raku/ch-2.raku
new file mode 100755
index 0000000000..e1497801a6
--- /dev/null
+++ b/challenge-273/feng-chang/raku/ch-2.raku
@@ -0,0 +1,7 @@
+#!/bin/env raku
+
+unit sub MAIN(Str:D $s);
+
+with $s.index('b') // -1 {
+ put ($_ ≥ 0) && ($_ > ($s.rindex('a') // -1));
+}
diff --git a/challenge-273/feng-chang/raku/test.raku b/challenge-273/feng-chang/raku/test.raku
new file mode 100755
index 0000000000..110f6e8c09
--- /dev/null
+++ b/challenge-273/feng-chang/raku/test.raku
@@ -0,0 +1,28 @@
+#!/bin/env raku
+
+# The Weekly Challenge 273
+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, Percentage of Character
+pwc-test './ch-1.raku', <perl e>, 25, 'Percentage of Character: $str = "perl", $char = "e" => 25';
+pwc-test './ch-1.raku', <java a>, 50, 'Percentage of Character: $str = "java", $char = "a" => 50';
+pwc-test './ch-1.raku', <python m>, 0, 'Percentage of Character: $str = "phthon", $char = "m" => 0';
+pwc-test './ch-1.raku', <ada a>, 67, 'Percentage of Character: $str = "ada", $char = "a" => 67';
+pwc-test './ch-1.raku', <ballerina l>, 22, 'Percentage of Character: $str = "ballerina", $char = "l" => 22';
+pwc-test './ch-1.raku', <analitik k>, 13, 'Percentage of Character: $str = "analitik", $char = "k" => 13';
+
+# Task 2, B After A
+pwc-test './ch-2.raku', 'aabb', 'True', 'B After A: aabb => true';
+pwc-test './ch-2.raku', 'abab', 'False', 'B After A: abab => false';
+pwc-test './ch-2.raku', 'aaa', 'False', 'B After A: aaa => false';
+pwc-test './ch-2.raku', 'bbb', 'True', 'B After A: bbb => true';