aboutsummaryrefslogtreecommitdiff
path: root/challenge-239
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2023-10-16 23:20:42 +0100
committerGitHub <noreply@github.com>2023-10-16 23:20:42 +0100
commit9e9b671b143fa42fcec2719611ed14b63d862e32 (patch)
treef8d6176f3c4a711aa75617b28fa6d0a5c4cff620 /challenge-239
parentbb72bef24528f3c7056a36b32661aec7b4f6abe6 (diff)
parentab1293cfcddc7cf4d2c7ab6b2a46e96f356c0936 (diff)
downloadperlweeklychallenge-club-9e9b671b143fa42fcec2719611ed14b63d862e32.tar.gz
perlweeklychallenge-club-9e9b671b143fa42fcec2719611ed14b63d862e32.tar.bz2
perlweeklychallenge-club-9e9b671b143fa42fcec2719611ed14b63d862e32.zip
Merge pull request #8881 from andemark/challenge-239
Challenge 239 Solutions (Raku)
Diffstat (limited to 'challenge-239')
-rw-r--r--challenge-239/mark-anderson/raku/ch-1.raku11
-rw-r--r--challenge-239/mark-anderson/raku/ch-2.raku39
2 files changed, 50 insertions, 0 deletions
diff --git a/challenge-239/mark-anderson/raku/ch-1.raku b/challenge-239/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..4763f75e9f
--- /dev/null
+++ b/challenge-239/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,11 @@
+#!/usr/bin/env raku
+use Test;
+
+ok same-string(<ab c>, <a bc>);
+nok same-string(<ab c>, <ac b>);
+ok same-string(<ab cd e>, [<abcde>]);
+
+sub same-string(@a, @b)
+{
+ [eq] ([~] @a), ([~] @b)
+}
diff --git a/challenge-239/mark-anderson/raku/ch-2.raku b/challenge-239/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..f6c46defd7
--- /dev/null
+++ b/challenge-239/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,39 @@
+#!/usr/bin/env raku
+use Test;
+use Benchy;
+
+is consistent-strings(<ad bd aaab baa badab>, 'ab'), 2;
+is consistent-strings(<a b c ab ac bc abc>, 'abc'), 7;
+is consistent-strings(<cc acd b ba bac bad ac d>, 'cad'), 4;
+benchmark();
+
+sub consistent-strings(@a, $allowed)
+{
+ @a.grep({ .comb (<=) $allowed.comb }).elems
+}
+
+sub consistent-strings-slow(@a, $allowed)
+{
+ @a.match(/ <|w> <{"<[$allowed]>"}>+ <|w> /, :global).elems
+}
+
+sub benchmark
+{
+ b 10,
+ {
+ consistent-strings-slow(<ad bd aaab baa badab>, 'ab');
+ consistent-strings-slow(<a b c ab ac bc abc>, 'abc');
+ consistent-strings-slow(<cc acd b ba bac bad ac d>, 'cad')
+ },
+
+ {
+ consistent-strings(<ad bd aaab baa badab>, 'ab');
+ consistent-strings(<a b c ab ac bc abc>, 'abc');
+ consistent-strings(<cc acd b ba bac bad ac d>, 'cad')
+ }
+
+ # Bare: 0.000040891s
+ # Old: 11.435895767s
+ # New: 0.019084392s
+ # NEW version is 599.23x faster
+}