aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-099/mark-anderson/raku/ch-1.raku15
-rw-r--r--challenge-099/mark-anderson/raku/ch-2.raku11
2 files changed, 26 insertions, 0 deletions
diff --git a/challenge-099/mark-anderson/raku/ch-1.raku b/challenge-099/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..9bd7d0c63e
--- /dev/null
+++ b/challenge-099/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,15 @@
+#!/usr/bin/env raku
+use Test;
+plan 4;
+
+is pattern-match("abcde", "a*e"), 1;
+is pattern-match("abcde", "a*d"), 0;
+is pattern-match("abcde", "?b*d"), 0;
+is pattern-match("abcde", "a*c?e"), 1;
+
+sub pattern-match($S, $P is copy)
+{
+ $P ~~ s:g/ \? / . /;
+ $P ~~ s:g/ \* / .* /;
+ so $S ~~ / ^ <$P> $ / andthen .Int;
+}
diff --git a/challenge-099/mark-anderson/raku/ch-2.raku b/challenge-099/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..f1ace13893
--- /dev/null
+++ b/challenge-099/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,11 @@
+#!/usr/bin/env raku
+use Test;
+plan 2;
+
+is unique-subsequence("littleit", "lit"), 5;
+is unique-subsequence("london", "lon"), 3;
+
+sub unique-subsequence($S, $T)
+{
+ +($S ~~ m:ex/<{ $T.comb.join(" .* ") }>/);
+}