diff options
| -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 +} |
