diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2023-10-16 23:20:42 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-16 23:20:42 +0100 |
| commit | 9e9b671b143fa42fcec2719611ed14b63d862e32 (patch) | |
| tree | f8d6176f3c4a711aa75617b28fa6d0a5c4cff620 | |
| parent | bb72bef24528f3c7056a36b32661aec7b4f6abe6 (diff) | |
| parent | ab1293cfcddc7cf4d2c7ab6b2a46e96f356c0936 (diff) | |
| download | perlweeklychallenge-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)
| -rw-r--r-- | challenge-239/mark-anderson/raku/ch-1.raku | 11 | ||||
| -rw-r--r-- | challenge-239/mark-anderson/raku/ch-2.raku | 39 |
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 +} |
