diff options
| author | Mark <53903062+andemark@users.noreply.github.com> | 2022-10-03 07:42:07 +0000 |
|---|---|---|
| committer | Mark <53903062+andemark@users.noreply.github.com> | 2022-10-03 07:42:07 +0000 |
| commit | 5087729bf5a4afd5389940b164e935b2e74cb28f (patch) | |
| tree | 636af0409da92eb40fc9d0951c79a392f1e66776 | |
| parent | e23f39fb80db32b6e802106e4b5d3421e15fb308 (diff) | |
| download | perlweeklychallenge-club-5087729bf5a4afd5389940b164e935b2e74cb28f.tar.gz perlweeklychallenge-club-5087729bf5a4afd5389940b164e935b2e74cb28f.tar.bz2 perlweeklychallenge-club-5087729bf5a4afd5389940b164e935b2e74cb28f.zip | |
Challenge 185 Solutions
| -rw-r--r-- | challenge-185/mark-anderson/raku/ch-1.raku | 17 | ||||
| -rw-r--r-- | challenge-185/mark-anderson/raku/ch-2.raku | 10 |
2 files changed, 27 insertions, 0 deletions
diff --git a/challenge-185/mark-anderson/raku/ch-1.raku b/challenge-185/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..49b1472aa5 --- /dev/null +++ b/challenge-185/mark-anderson/raku/ch-1.raku @@ -0,0 +1,17 @@ +#!/usr/bin/env raku +use Test; + +is mac-address('1ac2.34f0.b1c2'), '1a:c2:34:f0:b1:c2'; +is mac-address('abc1.20f1.345a'), 'ab:c1:20:f1:34:5a'; + +subset Mac of Str where /^ [ <[0..9a..f]> ** 4 ] ** 3 % '.' $/; + +sub mac-address(Mac $mac is copy) +{ + given $mac + { + s:g/\.//; + s:g/(..) <?before ..>/$0:/; + .return + } +} diff --git a/challenge-185/mark-anderson/raku/ch-2.raku b/challenge-185/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..7bb46da0df --- /dev/null +++ b/challenge-185/mark-anderson/raku/ch-2.raku @@ -0,0 +1,10 @@ +#!/usr/bin/env raku +use Test; + +is-deeply mask-code('ab-cde-123', '123.abc.420', '3abc-0010.xy'), ('xx-xxe-123', 'xxx.xbc.420', 'xxxx-0010.xy'); +is-deeply mask-code('1234567.a', 'a-1234-bc', 'a.b.c.d.e.f'), ('xxxx567.a', 'x-xxx4-bc', 'x.x.x.x.e.f'); + +sub mask-code(+@list) +{ + map { .subst(/<alnum>/, 'x', :x(4)) }, @list +} |
